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不行,所以就在链接的时候需要两个库文件都包含,同时要有这一个头文件才行。。。

  • 相关阅读:
    如何利用UltraEdit语法着色来编辑shell脚本
    css 运动背景
    页面加载进度条
    jScrollPane滚动条
    页面加载进度条改进版
    js页面新消息提示
    一道题
    jquery插件 展示信息
    冒泡排序和快速排序
    字体背景
  • 原文地址:https://www.cnblogs.com/tzhangofseu/p/2249585.html
Copyright © 2011-2022 走看看