2つのファイル->fact.h
とフォルダmain.c
があります。の関数を呼び出すmain関数があります。arコマンドでアーカイブを作成しています->/home/snyp1/new
main.c
fact(int x)
fact.h
.a
snyp1@Snyp:~/new$ ar -r -s libfact.a fact.o
ar: creating libfact.a
fact.h fact.o libfact.a main.c
snyp1@Snyp:~/new$ gcc main.c -L/home/snyp1/new -lfact -o main
/home/snyp1/new/libfact.a: could not read symbols: Archive has no index; run ranlib to add one
collect2: ld returned 1 exit status
snyp1@Snyp:~/new$ ranlib libfact.a
snyp1@Snyp:~/new$ gcc main.c -L/home/snyp1/new -lfact -o main
/home/snyp1/new/libfact.a: could not read symbols: Archive has no index; run ranlib to add one
collect2: ld returned 1 exit status
私はubuntu12.04にいます。何が悪いのか教えてください。(また、私がを使用しない場合-L/.../new
、gccは「lfact」を見つけることができないと言います。おそらくそれがないためです/usr/local/lib
)
編集:OK私は原因を見つけました。fact.h
これは、をビルドfact.o
してライブラリに配置するために使用していたため、期待どおりに機能していませんでした。だから私は今それをに変更しfile.c
、今はうまく働いています。その情報を提供するべきだった、ごめんなさい。なぜこのような問題が発生するのかはわかりませんが。少なくとも1つの.c
ファイルがなくてもライブラリを作成することはできませんか?