`
cryolite
  • 浏览: 573090 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

静态链接与动态链接

阅读更多
基于gmp开发第三方库,后者以动态链接库(静态库?)对方式发布,
为了效率gmp建议对该库采用静态链接,
所以,目的是生成静态链接gmp库的库文件(动态库?静态库?)

一、生成可执行文件
1. 动态链接库的编译
Mac和linux都是:
gcc -o param_convention1 param_convention.c -lgmp

2. 静态链接库的编译
Mac是:
gcc -o param_convention2 param_convention.c -Wl,-no_pie /usr/local/lib/libgmp.a

linux是:
gcc -o param_convention2 param_convention.c -static /usr/lib/x86_64-linux-gnu/libgmp.a


二、生成动态链接库
Mac是:
gcc -bundle -flat_namespace -undefined suppress -o pc.so pc.c -Wl,-no_pie /usr/local/lib/libgmp.a
或者
gcc -dynamiclib -current_version 1.0 -o libpc.dylib pc.c -Wl,-no_pie /usr/local/lib/libgmp.a

生成可执行文件
gcc -o main main.c ./libpc.dylib -Wl,-no_pie /usr/local/lib/libgmp.a

gcc -o main main.c -dynamic -L. -lpc -Wl,-no_pie /usr/local/lib/libgmp.a

Linux是:
gcc -fPIC -shared -o libpc.so
生成可执行文件
gcc -o main main.c ./libpc.so /usr/lib/x86_64-linux-gnu/libgmp.a

不过虽然gmp不是动态库了,但是libpc还是动态库的方式发布,动态库对效率问题依然存在,似乎不会改善性能?
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics