【问题标题】:ACE fails at Linker in MAC OS X 10.9 (and higher)ACE 在 MAC OS X 10.9(及更高版本)的链接器上失败
【发布时间】:2014-11-18 09:23:50
【问题描述】:

我正在尝试使用 CLANG++ 在 MAC OS X 10.9 中编译和运行以下简单代码:

#include "ACE_wrappers/ace/MEM_Stream.h"
#include <iostream>

int main()
{
        std::cout << "Hello World" << std::endl;
        ACE_MEM_Stream m(3);
        m.close_reader();
        return 0;
}

但我收到以下错误:

QAs-MacBook:aceTestLinking Moamen$ clang++ myTest.cpp 
Undefined symbols for architecture x86_64:
  "ace_os_main_i(int, char**)", referenced from:
       _main in moamen-511a28.o
  "ACE_SOCK::ACE_SOCK()", referenced from:
       ACE_MEM_IO::ACE_MEM_IO() in moamen-511a28.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

编译行:

clang++ myTest.cpp

我正在使用的 CLANG 编译器版本:

QAs-MacBook:aceTestLinking Moamen$ clang++ --version
Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix

注意 - 我也尝试使用“-std=c++11”、“-stdlib=libstdc++”进行编译,如以下主题所示: C++ linking error after upgrading to Mac OS X 10.9 / Xcode 5.0.1 但没有解决问题。

谢谢,

穆阿门

【问题讨论】:

  • 显然你没有链接到 ACE 库。
  • 请注意,之前在旧版 OS X(10.8 及更低版本)中可以使用相同的代码,但在 CLANG 编译器更新后,它无法正常工作(在我使用 g++,而不是 clang++ 之前)。
  • 我尝试运行 clang++ myTest.cpp -I ACE_wrappers/lib 仍然遇到同样的错误
  • -l-L 是不同的编译器选项,我相信你必须用正确的值来指定它们。

标签: c++ macos linker clang++ ace


【解决方案1】:

感谢回复,在Linux Ubuntu上进行了一番调查后,我成功地用以下命令编译代码g++ -o m.out myTest.cpp ACE_wrappers/lib/libACE.a -I ACE_wrappers/ -lpthread -ldl。似乎缺少一些默认库!

【讨论】:

    猜你喜欢
    • 2014-02-04
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-12
    • 2013-11-28
    • 2014-01-05
    相关资源
    最近更新 更多