[MERFISH报错合集]Error2 ld/ symbol(s) not found for architecture x86_64
Posted Craven胆小鬼
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[MERFISH报错合集]Error2 ld/ symbol(s) not found for architecture x86_64相关的知识,希望对你有一定的参考价值。
使用命令gcc ia_utilities.o -dynamiclib -o libia_utilities.dylib
生成动态库时出错。
报错提示语句如下,显示有未定义的符号被使用了。
Undefined symbols for architecture x86_64:
...
...
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
中间具体的报错过程忘记保留了。...
部分是一些报错提示,提示一些定在kdtree
里的变量和函数找不到。
理论上来说kdtree.c
和kdtree.h
这俩个文件我的工程目录下面都是存在的,编译ia_utilities.c
这个文件的时候也一切正常。我折腾了一天也没找到办法能够让gcc
找到这两个文件。
于是一气之下我把kdtree.c
以及kdtree.h
里面的内容直接加入到了ia_utilities.c
文件里,并取消了该文件对kdtree的引用。
于是再次生成动态库成功。
很显然,错误就是因为gcc的链接器找不到kdtree里的函数而发生的。
很显然,我debug的方式简直蠢得不行。
带上我的痛苦面具。难受。
[MERFISH报错合集]Error4 Library not load.md
OSError: dlopen(/Users/ncc-1701-enterprise/Documents/MERFISH_analysis/storm-analysis/storm_analysis/c_libraries/libmatched_filter.dylib, 6): Library not loaded: libft_math.dylib
Referenced from: /Users/ncc-1701-enterprise/Documents/MERFISH_analysis/storm-analysis/storm_analysis/c_libraries/libmatched_filter.dylib
Reason: image not found
我就很无语。这个动态库的问题就这辈子都改不完了。我很绝望好吧。带上我的痛苦面具。
这个是因为libft_math.dylib
是被动态库libmatched_filter.dylib
所引用的,所以gcc
会去usr/local/lib
里找,你得把libft_math.dylib
移动到usr/local/lib
这个目录里才行。
我特么终于把动态库的问题解决完了。谢谢了我终于可以脱下痛苦面具了。
以上是关于[MERFISH报错合集]Error2 ld/ symbol(s) not found for architecture x86_64的主要内容,如果未能解决你的问题,请参考以下文章
[MERFISH报错合集]Error3:fatal error: 'fftw3.h' file not found #include <fftw3.h;
缺少链接库报错:ld: symbol(s) not found for architecture x86_64