2016-05-16 104 views
1

我是新来的Gentoo,并试图安装一个名为TexGen使用CMake的(http://texgen.sourceforge.net/index.php/Main_Page)3D建模程序,我不断收到错误:重新编译-fPIC的Gentoo

relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC 

在这过程中,会出现此:

[ 80%] Linking CXX shared module ../_Renderer.so 

我看了遍,并尝试设置-fPIC标志CMake的选项文件,但有一个在结果没有变化。正如我所说的,我对Linux和Gentoo非常新(大约几周),任何帮助都将不胜感激。

+0

你只用了几个星期的linux,但你已经深入研究了gentoo?好家伙。 –

+0

@MitchWeaver我正在使用的实验室只使用gentoo,所以这是一个冒险 – aviator333

+0

如果你从官方包得到这个错误,我建议你将它报告给bugs.gentoo.org,如果不是那么forums.gentoo .org,这是一个更好的新手平台。 – rindeal

回答

0

其实Gentoo有一个eclass来构建基于CMake的项目(参见)。而且AFAIK,它会替换你的封装选项(准确地说,它会添加一个新的配置类型),配置为/etc/portage/make.conf(或/etc/paludis/bashrc,如果使用的是paludis)。所以,我不想知道在包ebuild中“黑客入侵”CMakeLists.txt没有帮助。

所以,最简单的方法是将该选项添加到您的Gentoo设置中。个人意见我使用this way在我的系统中构建boost库(是的,我需要在我的一些项目中将boost的静态库链接到动态链接库中)。是的,我使用paludis,但emerge可能具有相似的功能(设置每个包编译器选项的方法)。

的另一种方式,而不是“黑客”的编译器选项直接(通过CMAKE_<LANG>_FLAGS),看看到CMAKE_POSITION_INDEPENDENT_CODE - 它会增加一个正确的编译器选项,供您,并可能eclass的具有高速缓存操作不会影响这个设置。

相关问题