已经浪费了几乎整整 4 天的时间来编译这个包。它在 OSX 10.6 中编译得很好,但是当我尝试在 linux(Kubuntu 10.04、3.8.0.27 内核)机器上编译它时给出未定义的参考错误。
错误似乎是makefile的顺序错误,但是AFAIK,我是唯一一个在编译它时遇到问题的人。因此,我试图找出造成差异的原因。该软件包非常大,编辑 Makefile 并在这里和那里移动 30-50 个库似乎不是一个好主意。
这是我认为到目前为止发现的差异
- 编译器 - gcc-4.7 (Linux) 和llvm-gcc-4.2 (OSX)
- 编译器标志--shared (Linux) 和-dynamic -dynamiclib -undefined dynamic_lookup (OSX)
有人有什么建议吗?
我尝试使用
clang++
andllvm-gcc-4.7
作为编译器,但我认为它仍然使用相同的链接器(ld
?)。所以我可以尝试指定使用llvm
?我怎么做?标志与 OSX
--shared
中的标志有什么不同吗?dynamic -dynamiclib -undefined dynamic_lookup
linux内核或发行版重要吗?(我认为他们在 CentOS 机器上编译得很好)
请帮忙。非常感谢。