zoukankan      html  css  js  c++  java
  • linux下Makefile中包含有shared library动态链接库文件时候的简单例子

    如果不知道什么是makefile,可以首先看我的另一篇博客:

    linux下Makefile的简单例子及解释

    http://www.cnblogs.com/lihaozy/archive/2012/08/09/2629706.html

    其实,包含有shared library动态链接库文件的编译链接过程,和不包含的在dependency关系的处理上完全一样,没什么区别,只是g++编译链接含有shared library文件的时候,命令加上相对应的参数(-shared -fPIC -L. -ltest等)即可。

    这里有2个文件,一个是test.cpp(中包含有一个test()函数),要编译成libtest.so

    另一个是main.cpp(调用test()),要编译成main.o

    然后将main.o和libtest.so链接成一个main(最终的可执行文件)

    test.cpp   ->   libtest.so

    main.cpp  ->   main.o

    main.o + libtest.so ->  main

    下面是代码和makefile:

    test.cpp & main.cpp:

    //test.cpp
    #include <iostream>
    using namespace std;
    
    void test()
    {
        cout<<"test() in test.cpp"<<endl;
    }
    //main.cpp
    #include <iostream>
    using namespace std;
    
    void test();
    
    int main()
    {
        test();
    }

    makefile:

    main: main.o libtest.so
        g++ -o main main.o -L. -ltest
    
    main.o: main.cpp
        g++ -o main.o main.cpp -c
    
    libtest.so: test.cpp
        g++ -o libtest.so test.cpp -shared -fPIC
    
    clean:
        rm *so* *.o main


    可以看到,没有太大的区别,dependecy的写法根本没变,只是加上一些参数而已。

  • 相关阅读:
    自定义input file样式
    input text 不显示输入的历史记录
    白话 P-value
    R博客
    安装NXNET
    形象的解释神经网络激活函数的作用是什么?
    嵌入式选择与L1正则化
    “梯度下降法”理解
    控制台乱码
    R语言快捷键
  • 原文地址:https://www.cnblogs.com/lihaozy/p/2629812.html
Copyright © 2011-2022 走看看