我正在Linux平台上开始我的第一步。我已经安装了Centos x64。我试图用一些函数和几个单元测试来构建一个小程序。crt1.o没有这样的文件linux x64上的C++编译错误
我使用Netbeans 7.1.2作为开发环境。
下面是构建过程的输出:
CLEAN SUCCESSFUL (total time: 671ms)
"/usr/bin/gmake" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
gmake[1]: Entering directory `/home/john/Dev/GoatsCheese'
"/usr/bin/gmake" -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/goatscheese
gmake[2]: Entering directory `/home/john/Dev/GoatsCheese'
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/main.o.d
g++ -m32 -c -g -I/usr/include/cppunit -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp
mkdir -p dist/Debug/GNU-Linux-x86
g++ -m32 -o dist/Debug/GNU-Linux-x86/goatscheese build/Debug/GNU-Linux-x86/main.o
/usr/bin/ld: crt1.o: No such file: No such file or directory
collect2: ld returned 1 exit status
编译器设置为创建一个32位可执行文件,但我不应该认为这是一个问题(32个可执行文件可以创建在Windows上的x64平台上 - 我熟悉的平台)。
找到发现在以下地方crt1.o文件:
locate crt1.o
/usr/lib64/Mcrt1.o
/usr/lib64/Scrt1.o
/usr/lib64/crt1.o
/usr/lib64/gcrt1.o
我不知道如果我错过了一个包,或者我应该创建一个符号链接。
我不同意你的看法。 Windows可以在任一平台上构建x64或x86可执行文件。因此,Linux平台也应该可以做到这一点。 – fishfood
同样,这并不是Linux平台无法胜任的。假设这是不安全的。 Linux是一个平台,而不是一个开发工具(编译器/链接器)。所以当你发表声明时,你应该提及你所指的是哪些开发工具(编译器/链接器)。它是开发工具(例如Visual Studio),而不是具有32位和64位二进制文件的Windows。其他工具可能无法做到。 在Linux中,您甚至可以通过交叉编译生成Windows二进制文件,因为开发工具能够做到这一点。 –