编译程序时,会显示以下错误消息:
Undefined symbols for architecture x86_64:
"_jrand_", referenced from:
___trfind_module_MOD_trfind in ccqRBw2L.o
(maybe you meant: ___jrand_module_MOD_jrand)
"_left_", referenced from:
___trmesh_module_MOD_trmesh in ccq56SyA.o
(maybe you meant: ___left_module_MOD_left)
"_lstptr_", referenced from:
___intadd_module_MOD_intadd in ccr7Tz7x.o
___swap_module_MOD_swap in cclq1Td3.o
___trfind_module_MOD_trfind in ccqRBw2L.o
___addnod_module_MOD_addnod in ccwGNCEK.o
(maybe you meant: ___lstptr_module_MOD_lstptr)
"_store_", referenced from:
___trfind_module_MOD_trfind in ccqRBw2L.o
(maybe you meant: ___store_module_MOD_store)
"_swptst_", referenced from:
___addnod_module_MOD_addnod in ccwGNCEK.o
(maybe you meant: ___swptst_module_MOD_swptst)
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
据我所知,这是因为模块之间的链接不正确。我的问题是如何解释编译器提供的信息。例如,“ccqRBw2L.o”中的含义是什么?
答案 0 :(得分:1)
对您而言,最重要的是建议maybe you meant
。
很可能你忘了use
相关的模块。特别是
"_jrand_", referenced from:
___trfind_module_MOD_trfind in ccqRBw2L.o
(maybe you meant: ___jrand_module_MOD_jrand)
当链接目标文件ccqRBw2L.o
(名称由您的构建机制,某些Makefile或类似文件控制)时,链接器未找到任何符号_jrand_
,这将是一个外部子例程或函数{ {1}}。
然而,链接器看到有一个名为jrand
的东西。
jrand
但它不是外部的,它似乎位于名为 maybe you meant: ___jrand_module_MOD_jrand
的模块中。
在调用此模块中的子例程或函数时,应确保使用模块(jrand
)。