C编译错误

时间:2011-04-21 13:33:55

标签: c

编译时出现以下错误,记录为错误的函数是#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);

3 个答案:

答案 0 :(得分:4)

您从链接器路径中离开了为x86_64定义nav_run_gps_system()setupgps()的库。

答案 1 :(得分:0)

您是否创建了这些功能?我猜不会。似乎错误的是x86计算机不存在这些函数,也许如果你在amd64中编译你运气好了:P

编辑:所以如果你是64位计算机...它必须是ld的东西,检查gcc的编译参数或你正在使用的任何东西

答案 2 :(得分:0)

似乎您要链接的库不适用于x86_64。尝试找到要使用的正确依赖项。

真的,您可能需要找到特定图书馆的邮件列表,并询问开发它的人。