簡體   English   中英

以C99模式鏈接非C99靜態庫

[英]Linking non C99 static library in C99 mode

我有一個靜態庫,我用gcc編譯時沒有c99模式。 我正在嘗試使用gcc -std = c99在編譯中鏈接它。 這給我一個錯誤:

undefined reference to 'functionName'

在這里,functionName是靜態庫中的函數。

這是我的匯編:

gcc -std=c99 -g -I../ -Llib/ -lmylib test.c ../file1.c ../file2.c -o test  

我在這里使用C99是因為test.c中的代碼#includes頭文件的實現使用C99標准。

靜態庫(lib / libmylib.a)未使用c99標准進行編譯,因為它的代碼使用了一些無法在C99模式下編譯的庫(但沒有c99標志的編譯)。

我還嘗試在gcc -std = c99之后立即將-L&-l標志的順序更改為末尾,但它給出了相同的“未定義引用”錯誤。

如何將它們鏈接在一起?

謝謝。

編輯 :我提到的functionName名稱為functionName是此處顯示的setupStacktrace()的假名: http ://pastebin.com/2RbEEPaj。 它的簽名是void setupStacktrace();

命令行參數的順序很重要。 鏈接器將遍歷您的靜態庫,從而意識到您到目前為止所擁有的方式並不需要它提供的任何內容,並丟棄其中的所有內容。 做這個:

gcc -std=c99 -g -I../ -Llib/  test.c ../file1.c ../file2.c -lmylib -o test

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM