编译npacky库时,我收到了链接错误,指出我需要用-fPIC编译lapack。我以为我已经做到了。有没有办法确定生产的lapack库是位置独立的?有没有办法确定.a或.so库已被编译为位置独立代码?
18
A
回答
-5
在一般情况下,你没有办法知道的:
$ cat a.c
int foo(int x) { return x+1; }
$ gcc -fno-pic a.c -c -o nopic.o
$ gcc -fPIC a.c -c -o pic.o
$ cmp pic.o nopic.o
$ cmp pic.o nopic.o && echo Identical
Identical
+5
没有代表性的例子。 – Vanuan 2012-06-11 16:46:21
14
你可能有一些运气this answer,虽然它依赖于平台,为所有目标文件不工作(但如果你的代码操纵三分球任何方式,它应该工作)。
这是objdump -r
与-fPIC
编译的文件中的结果:
test.o: file format elf32-i386
RELOCATION RECORDS FOR [.text]:
OFFSET TYPE VALUE
00000007 R_386_PC32 __i686.get_pc_thunk.cx
0000000d R_386_GOTPC _GLOBAL_OFFSET_TABLE_
,这是一个文件,而无需事先知情同意:
test.o: file format elf32-i386
相关问题
- 1. 有没有办法确定IIS或网站已被停止?
- 2. 保持1个代码库SWF被有时独立位置,有时模块
- 3. 有没有办法编译FF加载项代码
- 4. 有没有办法将Python代码“编译”到Arduino(Uno)?
- 5. PIC(位置独立代码)
- 6. 有没有办法确定neo4j数据库是否已关闭?
- 7. 有没有办法将C++代码编译为Microsoft .Net CIL(字节码)?
- 8. 如果没有源代码,是否可以将为Android编译的.so编译为.so for。
- 9. 有没有办法链接mex文件与代码编译没有-fPIC
- 10. 有没有办法找出在Linux上编译.so库时使用的编译器选项?
- 11. 有没有办法在Struts分页中确定“编码表ID”?
- 12. 有没有办法知道a-frame元素的“真实”位置?
- 13. 有没有办法反编译java类
- 14. 有没有办法确定是否有任何外围设备已被删除?
- 15. 代码编译没有
- 16. 代码CGColorSpaceCreateDeviceRGB没有编译
- 17. 为什么我的C代码没有被编译为EXE
- 18. 编译器独立C++代码资源
- 19. 反编译代码(独立于语言)
- 20. 使用脚本#编译代码(独立)
- 21. 有没有办法让错误“不被预编译”?
- 22. 有没有办法只为非库代码启用strictNullChecks?
- 23. 独立VM上没有内置库“dart:html”
- 24. XNA库没有被注册。无法编译或调试项目
- 25. 有没有办法为Visual Studio代码更改扩展文件夹位置
- 26. 有没有办法确定顶层Qt窗口是否已被移动?
- 27. 有没有在Linux中的命令,以确定库是否已建立在32位或64位模式
- 28. 有没有办法做一个“setRotation()”方法或代码?
- 29. 有没有办法在prepareForSegue被称为
- 30. 有没有办法确定指令作用域“&”项目是否已被设置为某个东西?
可能重复,但没有答案似乎是正确的:http://stackoverflow.com/questions/1340402/how-can-i-tell-with-something-like-objdump-if-an-object-file-has-been-built-wit – ergosys 2010-08-17 22:40:51
可能重复[How我可以告诉,像objdump这样的东西,如果一个目标文件已经建立了-fPIC?](https:// stackoverf low.com/questions/1340402/how-can-i-tell-with-something-like-objdump-if-an-object-file-has-been-built-wi) – 2017-10-26 05:24:52