linux中把.c的文件编译成.so

[复制链接]
查看11 | 回复1 | 2016-1-20 14:57:59 | 显示全部楼层 |阅读模式
首先gcc -c -fPIC libst.c生成 libst.o然后gcc -shared -fPIC -o libst.so libst.o生成 libst.so 动态链接库把libst.so拷贝到系统默认库目录下,比如 /lib, /usr/lib 下假定你有 test.c 要引用这个库gcc -lst -o test test.c然后就可以了假如不能把libst.so拷贝到默认库目录下,比方说放在了/home/aaa/lib 下那么就用这样的语句来编译test.cgcc -L/home/aaa/lib -lst -Wl,-rpath=/home/aaa/lib -o test test.c
回复

使用道具 举报

千问 | 2016-1-20 14:57:59 | 显示全部楼层
linux中共享库以so为后缀(shared object),与Windows下的DLL类似,是在程序运行时动态连接。多个进程可以连接同一个共享库。以下以编译mylib.c为例讲如何编译.so文件。首先,编译mylib.c:$gcc -c -fPIC -o mylib.o mylib.c-c表示只编译(compile),而不连接。-o选项用于说明输出(output)文件名。gcc将生成一个目标(object)文件mylib.o。注意-fPIC选项。PIC指Position Independent Code。共享库要求有此选项,以便实现动态连接(dynamic linking)。生成共享库:$gcc -shared -o mylib.so mylib.o库文件以lib开始。共享库文件以.so为后缀。-shared表示生成一个共享库。这样,共享库就完成了。.so文件和.h文件都位于当前工作路径(.)。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行