我正在尝试使用 xlc/xlC 编译器在 AIX 上进行交叉编译。
代码在另一台机器上使用默认设置时编译成功。代码实际上通过交叉编译成功编译,但问题来自链接器。这是将对象链接在一起的命令:
$(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*,无符号长)等。
我发现缺少的符号来自标准 c 库 libc.a。当我用 nm 查找正在拾取的 libc.a 的符号时,这些符号确实存在。我猜测 C++ 无法读取 C 对象可能存在问题,但我真的是在黑暗中拍摄。