私は次のようなビルドシステムでldを呼び出すCプロジェクトで作業しています。
ld --allow-multiple-definition --architecture mips -EB --relocatable a.o b.o c.o -o mylib.a a.o b.o c.o
しかし、このコマンドラインのサイズ(必要なすべてのオブジェクトファイルを含む約32,000文字とcygwinの使用)に問題が発生したため、いくつかの変更を検討し始めました。それらの1つは、同じオブジェクトへの2番目の参照を削除することでした。このような:
ld --allow-multiple-definition --architecture mips -EB --relocatable a.o b.o c.o -o mylib.a
しかし、これは物事を壊しました。私はいたるところにたくさんの未定義の参照を取得します。
なぜこれが起こったのですか?両方の呼び出しの違いは何ですか?私はldのドキュメントを読んでいますが、これまでのところ良くありません。
ボーナス
運が良ければ、古いバージョンにはそのようなことを処理するための--start-groupobjs.o-- end -groupオプションがあるかもしれません。