我有一個庫,我正在建設。在我的Makefile ar rcs lib/libryftts.a $^
GCC創建一個共享對象,而不是一個可執行的二進制文件
gcc -shared $^ -o lib/libryftts.so
:我所有的物體的編譯和鏈接先後當我運行的任何一個。我也能夠成功地將它們安裝到/usr/local/lib
當我用nm測試文件時,所有功能都在那裏。 我的問題是,當我運行gcc testing/test.c -lryftts -o test && file ./test
或gcc testing/test.c lib/libryftts.a -o test && file ./test
它說:
test: ELF 64-bit LSB shared object
,而不是作爲test: ELF 64-bit LSB executable
我期望的那樣。我究竟做錯了什麼?
你的'test.c'是否包含'main'? –
@EugeneSh。是的,它包含主要。 –
聽起來很奇怪。但可能需要更多信息來診斷問題。建議您創建一個最小測試用例併發布用於產生問題的確切代碼和構建命令。另外,你可能想用'gcc -v'運行最後一個編譯行,看看gcc真正使用的命令和選項。 – kaylum