zoukankan      html  css  js  c++  java
  • linux下生成.so文件和.a文件

    test.h

    1 #ifndef _TEST_H_
    2 #define _TEST_H_
    3
    4 void TestA();
    5 void TestB();
    6
    7 #endif



    test_a.cpp

    1 #include <stdio.h>
    2 #include "test.h"
    3
    4 void TestA()
    5 {
    6 printf("TestA func\n");
    7 }



    test_b.cpp

    1 #include <stdio.h>
    2 #include "test.h"
    3
    4 void TestB()
    5 {
    6 printf("TestB func\n");
    7 }



    生成so文件的命令

    g++ test_a.cpp test_b.cpp -fPIC -shared -o libtest.so

    生成.a文件的命令

    1 gcc -c test_a.cpp
    2 gcc -c test_b.cpp
    3 ar -r libtest.a test_a.o test_b.o




    test.cpp

    1 #include "test.h"
    2
    3 int main()
    4 {
    5 TestA();
    6 TestB();
    7
    8 return 0;
    9 }



    采用动态库编译命令

    g++ test.cpp -o test -L. -ltest



    执行

    export LD_LIBRARY_PATH=./
    ./test

    执行结果如下。

    采用静态库编译命令

    g++ -static -o test -L. -ltest test.cpp

    执行效果


    静态库的嵌套调用,有时候我想做一个自己的静态库,它里面要调用其他静态库里面的函数,经过试验

    这个好像用ar -r不行,所以就在链接的时候需要两个库文件都包含,同时要有这一个头文件才行。。。

  • 相关阅读:
    django2自动发现项目中的url
    Python中的__name__
    阻塞与非阻塞、同步与异步、I/O模型
    Python中的关键字的用法
    元类
    数据库介绍
    django+nginx+uwsgi 项目部署
    centos7安装mysql5.6
    MySQL5.7的新特性
    Python进行MySQL数据库操作
  • 原文地址:https://www.cnblogs.com/tzhangofseu/p/2249585.html
Copyright © 2011-2022 走看看