把源码编译打包为动态库so文件,做平台的可能对这些不熟悉。 对我们这些算是经常用到的。 总结个模板,一看就懂的那种,提供给有需要的人。 前提条件,机器上有 gcc工具链。 如果文件个数少,可以直接单个编译,如下: Building shared lib... g++ -c -fPIC Quote.cpp -o Quote.o g++ -c -fPIC QuoteExport.cpp...
现在把main.c和共享库编译链接在一起,然后运行: $ gcc main.c -g -L. -lstack -Istack -o main 或者指定动态库全名: $ gcc main.c -g -L. -l:libstack.so -Istack -o main 运行程序: $ ./main ./main: errorwhileloading shared libraries: libstack.so: cannot open shared object file: No...
gcc main.c-Llib-l MyTest-Iinclude-o app./app (执行失败,找不到链接库,没有给动态链接器(ld-linux.so.2)指定好动态库 libmytest.so 的路径) 第二种方法: gcc+源文件+-I头文件+libxxx.so+-o 可执行文件名 gcc main.c-Iinclude lib/libMyTest.so-o app (执行成功,已经指明了动态库的路径) ...
# 编译共享库gccadd.c -fPIC -shared -o libadd.so# -fPIC:生成位置无关目标代码,适用于动态连接;# -shared:生成一个共享库文件;# 编译主程序gcc main.c -ladd -o app# ladd相当于libadd.so的简写/usr/bin/ld: cannot find -laddcollect2:error:ldreturned1exit status 可以看到编译时无法找到库libadd...
linux 下编译c程序与动态链接库 1 动态库h文件和c文件 1.1 h 文件: kaflog4c.h /** * kaflog4c.h */ #include <stdio.h> #include <stdlib.h> void hello(const char *msg); 1. 2. 3. 4. 5. 6. 7. 1.2 c 文件: kaflog4c.c ...
一:将源码编译为动态库 使用gcc编译套件将源代码文件编译为动态库文件,需要使用如下命令: gcc test.c -fPIC -shared -o libtest.so -o参数指定生成的动态库文件名称为 libtest.so -fPIC 参数表示生成位置无关的 .o文件,这些.o文件可以用来链接成动态库so ...
-L(大写字母 L)在 GCC 的搜索位置上增加一个额外的库路径。 -l(小写字母 L)设置你要链接的库的名字。 例如,假设你写了一个叫做 libexample.so 的库,并且你想在编译你的应用 demo.c 时使用它。首先,从 demo.c 创建一个对象文件: $ gcc -I ./include -c src/demo.c ...
编译生成动态库 gcc *.c -fPIC -shared -o libname.so 链接动态库 gcc main.c -I {INCLUDE_PATH} -L {LIB_PATH} -lname -o main or gcc main.c -I {INCLUDE_PATH} {LIB_PATH_AND_LIBNAME} -o main or export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/{YOUR_PATH} export LIBRARY_PATH=$LIBRARY_...
一、使用GCC编译器制作动态库 1. 编写动态库源代码(例如libexample.c)。动态库的源代码可以是单个源文件,也可以是多个源文件。例如: “` // libexample.c #include void hello() { printf(“Hello, world!\n”); } “` 2. 使用GCC编译器将源代码编译成位置独立的目标文件(例如libexample.o)。命令如下...