Gcc can';不能静态编译程序

Gcc can';不能静态编译程序,gcc,cross-compiling,Gcc,Cross Compiling,我正在尝试为一个ARM构建一个交叉编译器,但在Clang和LLVM方面没有成功,要让我的机器完成它的任务,需要做的事情太多了。。 所以,我去了LinuxKD的网页,让clang和LLVM正确构建,我已经完成了,而且它们工作正常。。 所以,我回到了同一个站点(LinuxKD),了解如何为ARM构建交叉编译器,它使用了“Crosstool ng”,这对我来说很好。。我加载了一个比网站上显示的更高的版本,他使用的是crosstool-ng-1.12.0,我使用的是crosstool-ng-1.19.0

我正在尝试为一个ARM构建一个交叉编译器,但在Clang和LLVM方面没有成功,要让我的机器完成它的任务,需要做的事情太多了。。 所以,我去了LinuxKD的网页,让clang和LLVM正确构建,我已经完成了,而且它们工作正常。。 所以,我回到了同一个站点(LinuxKD),了解如何为ARM构建交叉编译器,它使用了“Crosstool ng”,这对我来说很好。。我加载了一个比网站上显示的更高的版本,他使用的是crosstool-ng-1.12.0,我使用的是crosstool-ng-1.19.0。。。 因此,它在设置之后开始执行它的操作,但它会出现以下错误:

[DEBUG]  Checking that gcc can compile a trivial statically linked program   (CT_WANTS_STATIC_LINK)
[DEBUG]    You may need to ensure that static libraries such as libc.a are installed on your system
[DEBUG]    ==> Executing: 'x86_64-build_unknown-linux-gnu-gcc' '-O2' '-g' '-pipe' '/home/cctools/arm/.build/arm-unknown-eabi/build/test.c' '-static' '-o' '/home/cctools/arm/.build/arm-unknown-eabi/build/.gccout' 
[DEBUG]    /usr/bin/ld: cannot find -lc
[ERROR]    collect2: error: ld returned 1 exit status
[ERROR]  
[ERROR]  >>
[ERROR]  >>  Build failed in step 'Checking that gcc can compile a trivial statically linked program (CT_WANTS_STATIC_LINK)'
[ERROR]  >>        called in step '(top-level)'
[ERROR]  >>
[ERROR]  >>  Error happened in: CT_DoExecLog[scripts/functions@257]
[ERROR]  >>        called from: main[scripts/crosstool-NG.sh@540]
[ERROR]  >> 
我的系统是Fedora 20,运行在I7华硕上。。 它声明/usr/bin/ld:找不到-lc,, -lc是Ld程序的一个程序或子指令,还是其他什么??
还是我错过了一个节目??类似Glibc的东西,我为Fedora 20 Linux提供了最新版本。

在Fedora 19和20上,要静态编译C程序,需要安装包
Glibc-devel
Glibc-static

sudo yum install glibc-devel glibc-static
要显示它在之后工作,请执行以下操作:

cat > hello.c <<'EOF'
#include <stdio.h>
int main(int argc, char **argv)
{
    puts("Hello, world.");
    return 0;
}
EOF

gcc -o hello hello.c -static
ldd hello
./hello

在我的例子中,链接步骤中的
-lc
错误是由于
libc。a
是ELF 32位,因此无法链接64位编译对象

check it with:<br>
"#file {build_path}/x86_64-linux-gnu/sysroot/usr/lib/libc.a"  or<br>
"#file {build_path}/x86_64-linux-gnu/sysroot/usr/lib/libc.so"
检查:
“#文件{build_path}/x86_64-linux-gnu/sysroot/usr/lib/libc.a”或
“#文件{build_path}/x86_64-linux-gnu/sysroot/usr/lib/libc.so”
关于
/usr/bin/ld有什么不清楚的地方:找不到-lc
?路径中有libc吗?哪条路径??我把Libc放进去了吗?Libc和Glibc有什么不同吗?Glibc已经安装好了。我不明白为什么人们会给出含糊不清的答案,然后我不得不要求澄清他们在说什么。。我没有给出一个真正有助于最初提问的人的答案,而是尝试使用Yum安装Libc,如Yum安装Libc。。说明没有这样的程序。可能是
glibc-dev
libc6-dev
或类似的程序。注意,这与为ARM交叉编译静态链接程序无关;我只是想处理这样一个事实,即您试图安装的程序正在抱怨它无法为正在运行的机器编译静态二进制文件。
check it with:<br>
"#file {build_path}/x86_64-linux-gnu/sysroot/usr/lib/libc.a"  or<br>
"#file {build_path}/x86_64-linux-gnu/sysroot/usr/lib/libc.so"