linux 生成动态库和静态库
共享库 : shared library,,命名规则一般为libxxx.so
静态库:static library,,命名规则一般为libxxx.a
nm命令 可以查看库中的符号:nm libxxx.so
生成动态库命令:
生成
库分为两种: 共享库 : shared library,,命名规则一般为libxxx.so 静态库:static library,,命名规则一般为libxxx.a nm命令 可以查看库中的符号:nm libxxx.so 生成动态库命令: 生成.o文件(-fPIC)-fPIC则表明使用地址无关代码。PIC:Position Independent Code. Linux下编译共享库时,必须加上-fPIC参数,否则在链接时会有错误提示 g++ -C -fPIC example.cpp -o example.o 生成动态库 添加命令-shared g++ -shared example.o -o libexample.so 动态库的使用 编译:g++ -c main.cpp -o main.o 链接:g++ main.o -o excuteProgram -L. -lexample -L. 表示链接动态库,指定文件的位置,.点号表示当前目录,L可以指定多个 -lexample 表示使用libexample.so这个库文件 说明:linux在查找库文件时是不会从相对路径来寻找的,,所以库文件要添加到linux的查找路径中linux动态库,, 一般的做法是,添加环境变量LD_LIBRARY_PATH 命令:export LD_LIBRARY_PATH=. 将当前目录添加到环境变量 echo $LD_LIBRARY_PATH 显示当前的环境变量 readelf -d exe 可以查看执行文件依赖的动态库 makefile 生成动态库
生成静态库 g++ -c test1.cpp -o test1.o g++ -c test2.cpp -o test2.o ar -rcs libtest.a test1.o test2.o //生成静态库 nm libtest.a //查看静态库中的内容 使用: libtest.a 的本质就是test1.o 和 test2.o 的打包,可以像使用.o文件一样使用.a文件 g++ main.cpp libtest.a -o helloworld 也可以像动态库一样使用 g++ main.cpp -o helloworld -L /home/path -ltest //使用库的名字就好 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |