编译时出现以下错误,记录为错误的函数是#include modules
Undefined symbols for architecture x86_64: "_setup_gps", referenced from: _setupgps in cc5V40n0.o "_gps_navigation", referenced from: _setupgpsnavigation in cc5V40n0.o ld: symbol(s) not found for architecture x86_64
这是什么意思?我认为这是因为重复的主要功能,但我没有看到任何其他主要功能这个
int main(int argc, char **argv)
{
nav_run_gps_system();
return 0;
}
然后我使用错误日志中提到的函数创建2个线程。我将它们放在一个包装器中,这样我就可以将它们传递给Posix线程创建函数。
void *setupgps(void *ptr)
{
setup_gps(UNO,57600);
}
void *setupgpsnavigation(void *ptr)
{
struct point Destination = {-2,5742.307,1156.002};
gps_navigation(Destination);
}
gpsSetupThreadResult = pthread_create(&gpsSetupThread, NULL, setupgps, (void*) message2);
gpsNavigationThreadResult = pthread_create(&gpsNavigationThread, NULL, setupgpsnavigation, (void*) message3);
答案 0 :(得分:4)
您从链接器路径中离开了为x86_64定义nav_run_gps_system()
和setupgps()
的库。
答案 1 :(得分:0)
您是否创建了这些功能?我猜不会。似乎错误的是x86计算机不存在这些函数,也许如果你在amd64中编译你运气好了:P
编辑:所以如果你是64位计算机...它必须是ld的东西,检查gcc的编译参数或你正在使用的任何东西
答案 2 :(得分:0)
似乎您要链接的库不适用于x86_64
。尝试找到要使用的正确依赖项。
真的,您可能需要找到特定图书馆的邮件列表,并询问开发它的人。