AIX で xlc/xlC コンパイラを使用してクロスコンパイルしようとしています。
別のマシンでデフォルト設定を使用すると、コードは正常にコンパイルされます。コードは実際にはクロスコンパイルで正常にコンパイルされますが、問題はリンカーにあります。オブジェクトをリンクするコマンドは次のとおりです。
$(CHILD_OS)/usr/vacpp/bin/xlC -q32 -qnolib -brtl -o $(EXECUTABLE) $(OBJECT_FILES)
-L$(CHILD_OS)/usr/lib
-L$(CHILD_OS)/usr/vacpp/lib/profiled
-L$(CHILD_OS)/usr/vacpp/lib
-L$(CHILD_OS)/usr/vac/lib
-L$(CHILD_OS)/usr/lib
-lc -lC -lnsl -lpthread
-F$(CHILD_OS)$(CUSTOM_CONFIG_FILE_LOCATION)
コードをリンクしようとすると、いくつかの未定義のシンボルが表示されます: .setsockopt(int,int,int,const void*,unsigned long), .socket(int,int,int), .connect(int,const sockaddr*, unsigned long) など。
欠落しているシンボルは、標準の c ライブラリ libc.a のものであることがわかりました。拾ってきたlibc.aのシンボルをnmで調べたところ、確かにシンボルは存在していました。C ++がCオブジェクトを読み取れないという問題があるのではないかと推測していますが、私は本当に暗闇の中で撮影しています.