gcc - 在 gcc powerpc 编译中使用 -meabi 选项

标签 gcc compiler-errors makefile powerpc linux-mint

我继承了 2008 年左右在 SUSE linux 环境下构建良好的 powerpc 项目。我的目标是在 Linux Mint (v 17) 中构建同样的东西。我相信目标处理器是在环境变量中设置的 powerpc。在 Mint linux 上构建期间,它会产生以下错误:

developer@Will-test-Mint-VM ~/temp/linux.apps $ make -f Makefile.runme
make DESTDIR=`pwd`/tmp install
make[1]: Entering directory `/home/developer/temp/linux.apps'
Making install in libStreamerControl
make[2]: Entering directory `/home/developer/temp/linux.apps/libStreamerControl'
/bin/bash ../libtool  --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..  -I../include  -I../include -ffixed-r14 -meabi -fno-builtin -std=gnu99 -Wall -g -O2 -MT streamerControl.lo -MD -MP -MF .deps/streamerControl.Tpo -c -o streamerControl.lo streamerControl.c
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I.. -I../include -I../include -ffixed-r14 -meabi -fno-builtin -std=gnu99 -Wall -g -O2 -MT streamerControl.lo -MD -MP -MF .deps/streamerControl.Tpo -c streamerControl.c -o streamerControl.o
gcc: error: unrecognized command line option '-meabi'
make[2]: *** [streamerControl.lo] Error 1
 ...

它提示 -meabi 选项。我已经安装/更新了一些可能相关的软件包(eldk-5.6、automake、libtool 和 powerpc-linux-gnu-gcc 4.8.2 的更新版本)。

具体来说,我想了解 -meabi 选项。我没有找到很多关于它的信息。是什么导致编译器不知道它是什么?我看到了 SUSE 设置的输出构建,它很好地处理了 -meabi 选项。有什么建议么? 谢谢, 将

最佳答案

从您的评论来看,您似乎在此处进行交叉编译(即,您的构建架构与宿主架构不同)。在这种情况下,您的(构建)gcc 将无法识别 -meabi,因为它仅对主机 gcc 有效。

因此,您需要使用正确的编译器构建您的项目才能使其正常工作。执行此操作的方法取决于项目中的 makefile。您提到了 ARCHCROSS_COMPILE,但这些变量特定于 Linux 内核的构建系统。

据推测,您的 makefile 可能使用一些相当标准的变量来控制编译器和工具链的选择,例如 CCLD 等。尝试类似以下内容:

make -f Makefile.runme CC=powerpc-linux-gnu-gcc LD=powerpc-linux-gnu-ld

如果您的编译仍然失败,您可能需要提供您的 Makefile 的源代码(或链接)。

关于gcc - 在 gcc powerpc 编译中使用 -meabi 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32470461/

相关文章:

c - 在 C 中生成文件给出 fatal error

c - "linker input file unused because linking not done"是什么意思? (C 生成文件)

c - 在这个简单的例子中,为什么我没有从 gcc 收到 "used uninitialized"警告?

c - linux GCC中结构的重新定义

c++ - 1>链接: fatal error LNK1104: cannot open file 'MSCOREE.lib' `

c++ - C++编译错误已自行修复(试图找出原因)

带有继承的 Typescript 编译器错误泛型类型

c++ - 诸如 `msg(long)` 与候选 `msg(int32_t)` 和 `msg(int64_t)` 等函数的模糊重载

linux - 如何解决编译错误--makefile

c - 绕过 make 的默认规则