2013-10-02 106 views
-2

我有crt284utest.c和crt_284u.so文件。在我使用dlopen(),dlclose(),dlsym()。現在我試圖使用下面的命令來編譯: GCCÇ-O crt284utest.c 雖然編制以上命令的誤差如下: gcc.real:C:沒有這樣的文件或目錄 然後 GCC crt_284u.o -ldl -o crt284utest 在編寫上述命令的錯誤如下: gcc.real:crt_284u.o:如何鏈接和編譯Linux中的.c和.so文件

+1

這不是'C',這是'-c'。現在你試着編譯一個名爲'c'的*源文件*,當你的意思是傳遞'-c'選項來告訴編譯器創建一個目標文件。通過閱讀錯誤信息應該很清楚。 –

+1

因爲目標文件被命名爲「crt284utest.o」而不是「crt_284u.o」。 –

回答

2

在這裏你去如何在Linux下使用gcc ::

編譯沒有這樣的文件或目錄

$ gcc -o firstprogram firstprogram.c

如果您的文件被命名爲firstprogram.c,則輸入'-o firstprogram'作爲gcc的參數。這基本上就是gcc可以創建的可執行文件的建議名稱。如果你鍵入類似下面的

$ GCC firstprogram.c

你會是一種在同一目錄C源文件的a.out。這是gcc創建的可執行文件的默認名稱。當您在一個目錄中編譯許多程序時,這會造成問題。所以你用-o選項後面的可執行文件的名稱來覆蓋此

$ gcc的-o你好secondprogram.c

將由名稱創建一個可執行你好你的源代碼名爲secondprogram.c

運行您創建的可執行文件與在提示符處鍵入以下內容一樣簡單。

$ ./firstprogram OR $ ./hello