【发布时间】:2015-11-13 04:56:19
【问题描述】:
我正在使用以下./configure 命令构建 GCC 5.2.0 交叉编译器:
../gcc-5.2.0/configure --prefix=/usr --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=x86_64-myos-linux-gnu --disable-nls --enable-languages=c,c++ --with-sysroot=/myos --with-native-system-header-dir=/include
所以构建平台和宿主平台都是x86_64-unknown-linux-gnu,目标平台是x86_64-myos-linux-gnu。
在构建环境中,我有一个目录/myos(/ 的子目录),其中包含目标平台的根文件系统。
据我了解,GCC 构建过程分为两个主要阶段,第一个阶段是使用构建环境中的工具链生成 GCC 可执行文件等,第二个阶段是使用刚刚构建的可执行文件构建各种“目标库”,例如libgcc 和libstdc++。
所以在make 和make DESTDIR=... install 之后,我有:
usr/
usr/bin/
usr/include/
usr/lib/
usr/libexec/
usr/share/
usr/x86_64-myos-linux-gnu/
据我了解,usr/x86_64-myos-linux-gnu/ 包含旨在放入目标平台文件系统的文件(例如libgcc 和libstdc++ 的.so 文件),但是有几个问题:
1) 只需执行make install,usr/x86_64-myos-linux-gnu/ 将不会被放入我的目标目录/myos。
2)如果我在mvusr/x86_64-myos-linux-gnu/目录下,会与目标库.la文件不一致。例如,文件usr/x86_64-myos-linux-gnu/lib64/libtsan.la 包含以下行:dependency_libs=' -lpthread -ldl '/usr/x86_64-myos-linux-gnu/lib/../lib64/'/libstdc++.la -lm'
它表示libstdc++ 的绝对路径,但如果我公然mv usr/x86_64-myos-linux-gnu/ 目录,则根本不存在。
顶级./configure --help 和GCC install docs 似乎都没有说明更改usr/x86_64-myos-linux-gnu/ 目录路径的任何方法。有什么想法吗?
【问题讨论】:
标签: gcc cross-compiling