gpt4 book ai didi

GCC交叉编译器目标库安装目录

转载 作者:行者123 更新时间:2023-12-03 21:37:24 25 4
gpt4 key购买 nike

我正在使用以下 ./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 可执行文件等,第二阶段是使用刚刚构建的可执行文件来构建各种“目标库”,例如 libgcclibstdc++ .

所以在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/包含旨在放入目标平台文件系统的文件(例如 .solibgcclibstdc++ 文件),但是有几个问题:

1) 通过简单地做 make install , usr/x86_64-myos-linux-gnu/不会被放入我的目标目录 /myos .
2) 如果我 mv usr/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/ 路径的任何方式目录。有任何想法吗?

最佳答案

And from what I understand, usr/x86_64-myos-linux-gnu/ contains files that are meant to be placed into the filesystem of the target platform



不,你已经构建了一个交叉编译器,所以安装的文件应该存在于主机平台上,而不是目标上。

1) by simply doing make install, the usr/x86_64-myos-linux-gnu/ will not be placed into my target directory /myos.



正确的。这些文件位于 GCC 安装树中,而不是 sysroot 中。这样它们仍然会被交叉编译器找到,所以一切仍然有效。

通常,sysroot(在您的情况下 /myos )实际上不是目标的根文件系统,它是安装在目标上的相同文件的副本,因此将 GCC 的库安装到该 sysroot 中并没有真正的帮助,因为它们不会出现在目标上。

如果你想在目标上安装这些库,你需要自己安装它们。

关于GCC交叉编译器目标库安装目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33686195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com