python – 将GSL(或其他库)静态链接到共享库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 将GSL(或其他库)静态链接到共享库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1556字,纯文字阅读大概需要3分钟。
内容图文
![python – 将GSL(或其他库)静态链接到共享库](/upload/InfoBanner/zyjiaocheng/775/4ae2ff987ad44a97a40e9944d133ebca.jpg)
注意:尽管下面提到了Python,但我的问题很可能与Python无关.如果我没有弄错,我提到的“模块”相当于一个C库 – 至少是我的问题所关注的问题.
在Debian上我试图用C创建一个Python模块,然后使用GSL.以下Makefile成功编译它:
CC = gcc -Wall -fPIC -O3
NAME = meinzeug
matrizenwuerfler: $(SRC)
$(CC) -o $(NAME).o -I/usr/lib/python2.5/site-packages/numpy/core/include -I/usr/include/python2.5 -c $(NAME).c
$(CC) -shared -o $(NAME).so -lgsl -lgslcblas -lm $(NAME).o
因为这个模块应该被我的(Linux)机器使用,我希望将GSL包含在模块中(或随附它).
但是,如果我将-static作为选项添加到Makefile的最后一行,我会收到以下错误:
gcc -Wall -fPIC -O3 -shared -static -o meinzeug.so -lgsl -lgslcblas -lm meinzeug.o
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.3.2/crtbeginT.o: relocation R_X86_64_32 against `__DTOR_END__' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.3.2/crtbeginT.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
在库链接之前添加-Wl,-Bstatic会导致不同的错误:
gcc -Wall -fPIC -O3 -shared -o meinzeug.so -Wl,-Bstatic -lgsl -lgslcblas -lm meinzeug.o
/usr/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
其他东西,不起作用:用fPIC重新编译GSL,-static-libgcc,排列选项.
我还没有尝试过,用fPIC或类似方法编译gcc.
解决方法:
尝试
gcc -Wall -fPIC -O3 -shared -o meinzeug.so /usr/lib/libgsl.a -lm meinzeug.
你不能这样做
gcc -Wall -fPIC -O3 -shared -static ... # shared and static at the same time ?
因此,您将提供GSL的静态库以及您的代码.
在一天结束的时候,我会继续努力并保持对GSL的依赖.几乎每个人都拥有它,API非常稳定.
内容总结
以上是互联网集市为您收集整理的python – 将GSL(或其他库)静态链接到共享库全部内容,希望文章能够帮你解决python – 将GSL(或其他库)静态链接到共享库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。