2つのファイル->fact.hとフォルダmain.cがあります。の関数を呼び出すmain関数があります。arコマンドでアーカイブを作成しています->/home/snyp1/newmain.cfact(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ファイルがなくてもライブラリを作成することはできませんか?