2017-02-11 67 views
1

我正試圖在C中創建一個靜態庫。我用gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)問題與c中的靜態庫

我的C文件是在這裏:

add.c //Addition operation perform 
sub.c // Subtract operation perform 
mul.c // Multiply operation perform 
div.c // Division operation perform 

而且我想箱子靜態庫libabc.a使用下面的命令。

ar rcs libabc.a add.c sub.c mul.c div.c 

併成功創建。但是當我使用./a.out ./libabc.a運行可執行文件時,出現以下錯誤。

./libabc.a: error adding symbols: Archive has no index; run ranlib to add one 
collect2: error: ld returned 1 exit status 

我做錯了什麼?請幫幫我。

在此先感謝。

回答

2

使用目標文件(.o)而不是源文件(.c)。像,

ar rcs libabc.a sum.o mul.o add.o div.o 

使用-c選項,創建.o文件。

cc -c -fpic add.c sub.c mul.c div.c 

要連結純粹的靜態庫,使用-static,像

cc -static yourprgram.c libabc.a 

並運行可執行./a.out。它成功地工作。