私は同様の質問をしましたが、本当に混乱している更新があります。基本的に、次のようにリンカーを使用して多数のオブジェクト ファイルをリンクしたいと考えています。
/usr/ccs/bin/ld -o q -e start_master -dn -z defs -M ../../../mapfile.q {list of object files}
次のエラーが表示されます。
Undefined first referenced
symbol in file
_memset reconf.o
興味深いのは、memset が reconf.c で参照されておらず、ディレクトリ全体も grep しましたが、他のどのファイルにも _memset への参照がないことです。したがって、ソース コードのどこにも _memset が実際に使用されていないのに、なぜリンカからこのエラー メッセージが表示されるのか不思議に思っています。ここで何が起こっているのか誰にもわかりませんか?
どうもありがとう、このエラーは私たちを精神的に駆り立てています!
編集:
memset のライブラリへのパスを追加して -lc にリンクし、詳細モードで実行しようとしました。
/usr/ccs/bin/ld -o q -e start_master -dn -z defs -z verbose -L/usr/lib -M ../../../mapfile.q {list of object files} -lc
次に、次のエラーが表示されます: ld: 致命的: ライブラリ -lc: 見つかりません ld: 致命的: ファイル処理エラー。q に出力が書き込まれません
そしてこれ libc.so は明らかに /usr/lib にありますが...
紛らわしい
編集II:
ここで読むことができるように、さらに調査を行うと、Solaris 10 では静的リンクが消えたようです。
http://blogs.oracle.com/rie/entry/static_linking_where_did_it
おそらくこれは私の問題です。この問題を回避するためにリンカー コマンドを書き直す方法を知っている人はいますか?
どうもありがとう!