3. 链接静态库生成可执行文件 -L ./lib/ -lmytest2024表示将当前目录下的 lib 目录加入到程序函数档案库文件目录列表中,链接名字为 mytest2024 的库文件。默认库文件路径:/usr/lib/ gcc ./src/main.c-oapp2024-L./lib/-lmytest2024-I./inc 4. 复制静态库到本机的 /lib 目录下 sudocp./lib/libmyt...
/lib/ld-linux.so.2是动态链接器,它的路径是在编译链接时指定的,gcc在做链接时用dynamic-linker指定动态链接器的路径,它也像其它共享库一样加载到进程的地址空间中。libc.so.6的路径/lib/tls/i686/cmov/libc.so.6是由动态链接器ld-linux.so.2在做动态链接时搜索到的,而libstack.so的路径没有找到。linux-...
(1)我们继续用 stack.c 的例子。为了便于理解,我们把 stack.c 拆成四个程序文件(虽然实际上没太大必要) ,把 main.c 改得简单一些,头文件 stack.h 不变,本节用到的代码如下所示: (2)编译以及打包成静态库XXX.a 我们把 stack.c 、 push.c 、 pop.c 、 is_empty.c 编译成目标文件: 然后打包成一...
这里是一个静态库的示例以及其链接过程。首先,创建带有这些函数识别标志的头文件 mymath.h : int add(int a, int b); int sub(int a, int b); int mult(int a, int b); int divi(int a, int b); 使用这些函数定义来创建 add.c、sub.c、mult.c 和divi.c 文件。我将把所有的代码都放置到一...
例如,如果你的静态库位于/path/to/libs目录下,并且库的名称为libstatic.a,则应该使用以下命令: gcc your_source_file.c -o your_output_file -L/path/to/libs -lstatic 复制代码 这里,your_source_file.c是你的源代码文件,your_output_file是你希望生成的可执行文件。-lstatic表示链接名为libstatic.a的...
这里是一个静态库的示例以及其链接过程。首先,创建带有这些函数识别标志的头文件mymath.h: int add(int a, int b); int sub(int a, int b); int mult(int a, int b); int divi(int a, int b); 使用这些函数定义来创建add.c、sub.c、mult.c和divi.c文件。我将把所有的代码都放置到一个代码块...
1. 使用gcc命令进行链接 gcc是Linux系统中常用的编译器,也可以用来链接静态库。下面是使用gcc命令进行链接的方法: “`shell gcc -o output_file input_file.c -llibrary_name “` 其中,output_file是生成的可执行文件的名称,input_file.c是源文件的名称,library_name是静态库的名称(不包含lib前缀和后缀)。
gcc-c $<.PHONY:cleanclean:rm-f*.o*.a 在这里插入图片描述 如上图,首先我们为该静态库的名字设置一个变量static_lib,然后下面使用.o文件生成该静态库。 所以我们得出结论:静态库的本质就是将库中的源代码直接翻译成.o目标二进制文件,然后打包!
由于静态库是目标文件的合体,所以可以当作一个目标文件直接写名字进行链接: gcc main.c -I include lib/libTest.a -o app还有一个就是静态库的-fPIC选项, 当一个动态库依赖这个静态库时,由于动态库肯定是位置无关的,此时静态库被链接进去,也应该是位置无关的所以被依赖的静态库也要用-fPIC选项编译,通常也个...