gpt4 book ai didi

cross-compiling - 与 automake 交叉编译

转载 作者:行者123 更新时间:2023-12-04 02:56:39 25 4
gpt4 key购买 nike

我正在尝试交叉编译一个项目和它所依赖的库,以便在嵌入式系统上使用。应用程序和依赖项都使用 automake。我能够毫无问题地编译库。

./configure --host=powerpc-none-linux-gnuspe --prefix=/home/me/build_dir
make
make install

我用过 --prefix以便 make install没有将输出与所有 x86 库一起放在我的文件系统中。我也试过在没有 --prefix 的情况下运行 configure而是设置 DESTDIR运行前的环境变量 make install .他们似乎在做同样的事情。我希望能够压缩 /home/me/build_dir并将其放在嵌入式目标文件系统的根目录上。我希望 --prefix没有在我的主机上的某个地方硬编码绝对路径。

然后我尝试交叉编译使用这个库的应用程序:
./configure --host=powerpc-none-linux-gnuspe --with-sysroot=/home/me/build_dir

我遇到了两件事。配置脚本成功完成,但第一个 make 失败,因为它找不到一个标题。它正在查看 /usr/include而不是 /home/be/build_dir/usr/include .不应该是 --with-sysroot选项还修改包含目录还是我遗漏了什么?

另外,我收到警告
libtool: link: warning: library libstdc++.la was moved

我感觉我错过了一些东西。这个警告是我可以安全地忽略的东西还是我在某个地方搞砸了?

总结我的问题:
1) ./configure --prefix=x有区别吗和 make DESTDIR=x install ?
2)更新库标题的搜索路径的正确方法是什么?
3) 为什么我会收到关于 libstdc++ 的警告,我应该担心吗?

最佳答案

对于您的情况,您应该使用 DESTDIR .设置 --prefix将意味着生成的程序将安装在 --prefix 中的位置。 . DESTDIR另一方面,它是一个纯粹的 make install 工件,它只是在安装时在每个路径的开头加上前缀。最终产品仍预计安装在 --prefix地点。如果要在目标主机上安装结果,设置--prefix到它要去的地方并使用 DESTDIR在其他地方上演。

我相信只是设置--sysrootconfigure脚本是不够的,但我不确定。我认为设置 sysroot 而 configure运行但它不设置生成文件。

我通常做的是为编译器创建一个 shell 脚本包装器,它使用正确的 --sysroot=dir 调用真正的编译器选项,然后使用该包装器作为编译器名称到 configure .这样做比尝试让编译器的所有调用添加 --sysroot 更简单。外部标志。

我不确定 libstdc++警告。 libstdc++是编译器的一部分,而不是 sysroot 的一部分...?

预计到达时间:

通过脚本包装器,我的意思是创建一个名为 sysroot-gcc 的脚本:

#!/bin/sh
exec real-gcc --sysroot=/some/sysroot "$@"

然后你可以运行 configure CC=sysroot-gcc .您可以随心所欲地制作它;我有一个通用脚本,可以解析名称( $0 )并从中获取 sysroot 名称和工具名称( gccg++ 等),以便我可以对所有工具重复使用该脚本。

关于cross-compiling - 与 automake 交叉编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16573153/

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