【发布时间】:2014-04-04 09:49:18
【问题描述】:
我需要 C++ 编译方面的帮助,因为我显然遗漏了一些东西。
我根据我编写的其他 .so 库 (mylib2) 和一些使用它的简单程序创建了 .so 库(我们称之为 mylib)。第二个库也依赖于ANTLR。我使用CMake 来构建两个库,它们的编译和安装都很好。但是当我尝试编译程序时:
cmd> g++ program.cpp -lmylib
我明白了
/usr/local/lib/libmylib2.so.0: undefined reference to `antlr::CharScanner::traceOut(char const*)'
ANTLR 似乎是静态库,所以我尝试了
cmd> g++ program.cpp -lmylib -Wl,-Bstatic -lantlr
但我得到的只是
/usr/bin/ld: cannot find -lgcc_s
我有两个问题:
1) 为什么mylib2 看不到antlr?我应该提一下,我使用自己的 cmake find 脚本,这会是一个问题吗?
find_package(ANTLR REQUIRED)
include_directories(${ANTLR_INCLUDE_DIR})
2) 第二个错误是什么意思?为什么ld找不到libgcc_s?
我将非常感谢任何帮助。
编辑
我应该提到我正在使用 ANTLR 2.7
【问题讨论】: