我正在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二進制文件,因爲開發工具能夠做到這一點。 –