Error “ld: symbol not found for architecture x86_64”
This article has been posted for more information in https://mozzlog.com/blog/ld-symbol-not-found-for-architecture
Before you read: Invitation to Network Spy
Wait. Thank you for stopping by. This is a special invitation. You can jump to read the article if you want. 🙌
With Network Spy, you can monitor, inspect, and modify your network traffic during development. Perfect for debugging and more analysis. 🙌 Join the Waitlist Today! https://mozzlog.com/projects/network-spy
This error indicates that your code, usually from the C family language, has imported a header but has not yet been linked to it’s implementation.
For example, there is a header SimpleMath.h
// SimpleMath.hint divide_by_zero(int i);
Then we import it intomain.c
// main.c#include "SimpleMath.h"int main() {
int result = divide_by_zero(100);
printf("Result is %d", result);
}
When we compile it without implementation of SimpleMath.h
then we we’ll get ld: symbol not ... (bla-bla-bla)
The solution is to compile it with SimpleMath.c
clang main.c SimpleMath.c -o program
Or to link it with system implementation if there any.
clang main.c -LSimpleMath -o program
Fixed? Not yet. You’ll want to read more about C language then.
Oh yes, our SimpleMath.c
implementation is
// SimpleMath.c#include "SimpleMath.h"int divide_by_zero(int i) {
exit(1);
}
Happy fixing error!