2017-02-11 69 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。它成功地工作。