// hello.c
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello World!\n");
return 0;
}
1、编译生成可执行文件
gcc -o test hello.c
2、编译生成目标文件
gcc -c -o test.o hello.c
// string.c
#define ENDSTRING '\0'
int StrLen(char *string)
{
int len = 0;
while (*string++ != ENDSTRING)
len++;
return len;
}
// main.c
#include <stdio.h>
extern int StrLen(char *str);
int main(int argc, char *argv[])
{
char src[] = "Hello Dymatic";
printf("string length is:%d\n", StrLen(src));
return 0;
}
3、多文件编译
gcc -o test string.c main.c
4、预处理
gcc -E string.c -o string.i
5、编译成汇编语言
gcc -S string.c
6、生成静态链接库 .a 文件
ar -rcs libstr.a string.o
7、使用静态链接库
gcc -o test main.c -L./ -lstr 或 gcc -o test main.c libstr.a // 在使用-l选项时,-o选项要在-l选项之前出现,否则gcc会认为-l是生成的目标而出错
8、生成动态链接库
gcc -fPIC -shared -Wl,-soname,libstr.so -o libstr.so.1 string.c
-Wall:包含warning信息;
-fPIC:编译动态库所必须的, 输出不依赖位置的代码;
-shared:编译动态库必须选项;
-W1:向连接器传递一些参数,在这里传递的参数有"-soname", "libstr.so";
-o:动态库的名字,在这个例子里最终生成动态库libstr.so.1;
9、Linux系统中动态链接库搜索路径配置文件
/etc/ld.so.conf
也可以通过ldconfig <动态链接库所在绝对路径>,来添加动态链接库搜索路径
10、编译可执行程序test调用libstr.so
gcc -o test main.c -L./ -lstr 或 gcc -o test main.c libstr.so
Linux 编译静态链接库与动态链接库的方法
最新推荐文章于 2024-12-08 21:12:45 发布