📄 gcc_build_so.txt
字号:
怎么用gcc生成.so文件GCC=gccCFLAGS=-Wall -ggdb -fPIC#CFLAGS=all: libfunclibfunc:func.o func1.o $(GCC) -shared -Wl,-soname,libfunc.so.1 -o libfunc.so.1.1 $< ln -sf libfunc.so.1.1 libfunc.so.1 ln -sf libfunc.so.1 libfunc.so%.o:%.c $(GCC) -c $(CFLAGS) -o $@ $<clean: rm -fr *.o rm -fr *.so*最主要的是GCC命令行的一个选项:-shared 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件。你也可以加上(一般这么做)-fPIC (不是必需的,只是保证二进制在solaris上的可移植性,生成相对固定的符号指针)你还可以加上-soname <库内部名称>,该名称被动态连接器用来运行时查找这个库,而不是用编译时用-o指定的文件名来找这个库。.a 是静态库,由 ar 打包 .o 对象文件得到;.so 是 shared object 也是动态库,由 gcc -shared 编译得到。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -