linux下动态库的编译
1 实践
test_cl.c:
1 #include<stdio.h>
2 #include <stddef.h>
3
4 extern int add(int a, int b);
5 #define LabelAddr
6 main()
7 {
8 int i = 0;
9 printf("hello world!\n");
10 printf("label_abc=%d\n", &&label_abc);
11 // i = &&label_abc;
12 // goto *i;
13 goto *(&&label_abc);
14 printf("after goto\n");
15 label_abc:
16 printf("label_abc\n");
17 i++;
18
19
20 printf("add(a+b) = %d\n", add(1, 2));
21 return 0;
22
23 }
test_so.c
1 int add(int a, int b)
2 {
3 return a + b;
4 }
test_so1.c
1 int add(int a, int b)
2 {
3 return a - b;
4 }
1、
gcc -c -fPIC test_so.c
生成test_so.o
2、
gcc -shared -fPIC -o libtest_so.so test_so.o
生成libtest_so.so
3、
(rm test_so.o)
gcc test_cl.c -L. -ltest_so
4、
export LD_LIBRARY_PATH=`pwd`
5、
./a.out
结果是add(a+b) = 3
6、
(rm libtest_so.so)
gcc -shared -fPIC -o libtest_so.so test_so1.c
7、
./a.out
结果是add(a+b) = -1
(如果动态库依赖于其他的动态库不存在,在链接成可执行文件时才会报错)
(优先链接动态库的,除非用-static参数指定链接静态库)
分享到:
相关推荐
在 centos 7 下使用 gcc 4.8.5 + cmake 3.16.9 编译,包含 bin, include, lib, lib64, share 五个目录,可以直接在 linux C++ 程序中引用。 因为 grpc 编译比较麻烦,且依赖项较多,故而分享一下编译后的版本,本人...
LINUX下简单的编译 和使用动态链接库
详细讲述在Linux系统下如何编译动态库和使用动态库.
1、TensorFlow C++ API的编译是线上使用TensorFlow C++ API调用预先训练好的模型完成预测项目的必经之路...2、Linux环境下编译TensorFlow C++ API生成的动态链接库:libtensorflow_cc.so,libtensorflow_framework.so。
QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开 测试环境: 国产操作系统 Deepin20、...
Linux系统下使用gcc 5.3编译器编译的boost库1.68版本的动态库和静态库,多线程参数编译,经测试可用
网上大多都是Windows下的QT MQTT编译安装方法,Linux下有些不同,此文件是关于UBuntu和ARM Linux下QT MQTT库的编译安装详细步骤 -------------------------------------------------------- Linux版本:UBuntu 16.04...
vs2015动态库编译及调用、vs2015动态库编译Qt5.12.1调用、Qt5.12.1编译动态库android apk调用
在windows环境下,我们通常在IDE如VS的工程中开发C++项目,对于生成和使用静态库(*.lib)与动态库(*.dll)可能都已经比较熟悉,但是,在linux环境下,则是另一套模式,对应的静态库(*.a)与动态库(*.so)的生成...
linux下g++编译与使用静态库和动态库
将live555源码编译成可供android-ndk使用的动态库 1、linux下新建jni, 将Android.mk、build.sh放在jni目录,然后将live555源码下的目录 BasicUsageEnvironment、groupsock、liveMedia、UsageEnvironment也复制到jni...
libpcl相关的库,太大了,压缩前3个G,.so很多,具体功能还没测试,光编译就费了了我很大劲,有需要的朋友可以下载试试,后面要是用到可能会出个教程啥的
Libredwg的源码Linux/安卓编译生成的动态库so和头文件 -rwxr-xr-x. 1 root root 10987 Sep 5 03:46 alive.test -rwxr-xr-x. 1 root root 18728 Sep 5 03:54 dwg2dxf -rwxr-xr-x. 1 root root 32272 Sep 5 03:54 dwg...
因为mupdf官网下载的是纯c的编译后的静态库,使用vs编译生成了支持qt5的动态库,并支持x86和x64系统
tinyxml在linux下动态库的使用示例代码
在 ubuntu 下使用 gcc 4.8.5 + cmake 3.28 编译,包含 bin, include, lib, lib64, share 五个目录,可以直接在 linux C++ 程序中引用。 因为 grpc 编译比较麻烦,且依赖项较多,故而分享一下编译后的版本,本人在 ...
linux动态库的生成与使用指导,编译时与运行时库的路径 运行时动态库的路径搜索顺序。
lua动态链接库的编译 c++调用lua的的方法 linux中调用lua的环境配置
在linux上编译的ffmpeg动态库。编译环境为:ubuntu 64位;编译版本为:ffmpeg 5.1.2;x264 stable分支