2012-01-31 80 views
0

我重新編譯現有的源文件,但它不能創建可執行文件雖然文件中生成具有執行權限編譯器不能創建可執行

-rwxrwxr-x 1 ilvweb ilv  2949112 Jan 31 09:34 karny 

$ file karny 
karny: ELF 64-bit MSB dynamic lib SPARCV9 Version 1, dynamically linked, not stripped 

用於編譯

g++ -m64 -mcpu=v9 -DSUNOS -DNDEBUG -g -Wno-deprecated -o karny tkm.o THlm.o Connection.o Socket.o ThLogger.o File.o TextFile.o File.o Timer.o lPlugin.o \ 
      -G -lm 

命令是否有任何選項丟失

如果我們同時使用gcc和g ++以及爲g ++編寫的源代碼以便使用gcc進行重新編譯可以像當前那樣執行什麼操作LY在這種環境下,我們只能使用gcc的

+0

你使用什麼編譯器和操作系統? 'g ++'不會像你在那裏那樣使用'-G'。 – Borealid 2012-01-31 04:47:03

+0

它是g ++編譯器Solaris 9 9/05 s9s_u8wos_05 SPARC – AKS 2012-01-31 04:56:27

+0

如果您問是否可以使用像gcc這樣的C編譯器編譯C++源代碼,答案可能是「否」(除非您的C++代碼也是有效的C代碼) 。 – jjlin 2012-02-01 21:00:00

回答

1

file,你犯了一個共享對象(通常將被命名爲*.so)。

+0

是的,那是我的問題編譯選項中是否有任何錯誤,因爲它沒有將其視爲可執行文件可能是目標文件的順序? – AKS 2012-01-31 05:01:44

+0

@AKS:你能編譯一個簡單的hello world類型的程序:「g ++ -o hello hello.cpp」嗎?如果是這樣,那就試着編譯所有選項。然後一次添加一個真實文件。 – 2012-01-31 05:06:35

+0

不是它不工作,因爲我們有gcc和g ++,而且我能夠使用gcc編譯代碼源碼與g ++兼容,但不兼容gcc我編輯了問題 – AKS 2012-02-01 10:01:19

2

按照GCC manual:系統V

41年3月17日選項

這些附加選項上系統V可用推出4用於與其它編譯 兼容性在那些系統:

-G 創建一個共享對象。建議使用-symbolic或-shared來代替。

[...剪斷...]

看到,因爲你在(SysV的來源)的Solaris,似乎你問GCC創建一個共享對象。有沒有具體的原因,你有 - G?

+0

不是它是默認Makefile的一部分,因此開始使用它I發現gcc g ++都可以在這個環境中使用,gcc完美工作,而g ++則不能 – AKS 2012-02-01 09:52:56

相關問題