【发布时间】:2020-09-21 09:36:27
【问题描述】:
我在 Ubuntu 18.04 上使用 GitHub 存储库从源代码安装了 casacore。安装完成,没有任何错误,并且相应的文件被写入预期的目录(.h 文件到/usr/local/include 和库到/usr/local/lib)。在尝试使用这些编译基本 C++ 文件时,出现以下错误:
tmp/ccBxZcf3.o: In function 'main': /home/zealouspriest/C_C++_Projects/bb++/ms.cpp:15: undefined reference to 'casacore::MeasurementSet::MeasurementSet()'
/home/zealouspriest/C_C++_Projects/bb++/ms.cpp:15: undefined reference to 'casacore::MeasurementSet::~MeasurementSet()'
collect2: error: ld returned 1 exit status
我使用的编译器命令如下:
g++ -g -Wall -I/usr/local/include -L/usr/local/lib -lcasa_casa -lcasa_tables -lcasa_ms ms.cpp -o ms
正在编译的 ms.cpp 文件非常简单,只是创建一个空的测量集来测试是否成功链接,如下所示:
//ms.cpp
#include <iostream>
#include </usr/local/include/casacore/ms/MeasurementSets/MeasurementSet.h>
int main(){
casacore::MeasurementSet ms = casacore::MeasurementSet();
return 0;
}
这是我尝试过的所有内容:
a) 使用 GitHub 说明从源代码构建,
b) 从 Ubuntu 存储库安装。
提前感谢您的宝贵时间!
【问题讨论】:
-
你能在
nm -D -C libcasa_ms.so的输出中找到缺失的符号吗? -
@pptaszni 在运行命令时返回库中每个对象的符号。几乎所有的符号都是“T”、“U”、“V”或“u”。我不明白您所说的“查找缺失的符号”是什么意思。
-
我的意思是如果`m -D -C libcasa_ms.so | grep "MeasurementSet::MeasurementSet()" 显示您要查找的符号已定义。在手动安装库的情况下,混合来自不同项目版本的标头和共享库是一个常见问题。无论如何,我看到你只是以错误的顺序使用了 g++ args。
标签: c++