
As we have seen, there are several reasons why you may get undefined symbols when building your project in Xcode. In this article, I will go over all of the possible causes of undefineable symbols and how to fix them!
If you think that something is causing your program to not compile or run correctly, it’s very important to figure out what it is before trying anything else.
By identifying the source of the problem early, it can help prevent any potential complications later on.

If you are running into this issue, make sure you have the most recent stable version of GNU ld (libtool) installed. Version 2.4 or newer should work properly with Arch Linux.
You can check that by opening up your terminal window and doing an exact search for either “undefined symbol” or “architecture not found”. This will bring back any errors related to missing symbols. You can then run through each one and see if there is anything specific it points towards.
-D GCC=clang-gcc
Running this configuration option will force gcc to use clang instead of g++ as the C compiler. You can also run it while compiling so that it’s done automatically when you compile something in the future!
Note: If you are getting “unable to find library libicu,” then skip down the next section and try using Google Closure Compiler or another JavaScript lint tool.
Reminder: When fixing undefined symbols, make sure to only update one setting at a time! For example, if you only have to change which compiler is used, do not both check either box. Only one or the other, but NOT BOTH!
Step 1: Find Out What Library The Program Is Using
The first step towards solving an error caused by missing libraries is figuring out what library the program is trying to access. We can do this by looking at the Makefiles of the project.
Makefiles are a file format that contains instructions for how to build software. Most projects create their own version of this file specific to their coding style.
By opening these files directly in your favorite text editor, you can easily see what dependencies a project has.

The first step in fix your undefined symbol is to make sure you have done everything correctly when running./configure. There are some settings that can be found by looking at the documentation, or through direct testing.
If you still receive an error after verifying those steps, then it may indicate that your compiler does not like one or more components used during compilation. A common component is header file or library files which sometimes change over time.
Running `ldd` on your binary will tell you if there is a missing dependency. By comparing this output against similar binaries, you can determine what dependencies are needed and how to install them.

In general, if you are getting an undefined symbol error when trying to run your application or use a library, it means that there is something wrong in how you configured architecture x86-64 during development or configuration setting in a software package manager like CMake or pip for Linux users.
If your computer has several processors (CPUs) then sometimes one processor’s settings get “confused” about what CPU type they should assume other processors have. This happens because each individual processor has its own set of compiler options that it uses to compile code, and these settings get mixed up.
When multiple CPUs exist, compilers will choose which one to use by choosing a default. Sometimes this default changes from one version of the compiler to another, requiring people to go into advanced settings to make sure their build works properly.

An important thing to note is that even if you have installed architecture dependent packages, some may not work due to missing symbols.
This will only happen when certain dependencies are not built correctly or are no longer maintained by the developer. For example, in our case we were unable to compile glfw because it needed functions such as strlen() which is defined differently depending on what CPU architcture you use.
Running `configure` with the --list-libs option makes sure that it knows about every library function that it needs to run properly.

The first step in fixing your undefined symbols is running “make” or an equivalent tool such as `nopch`. This will recompile all of your projects, replacing missing header files with defaults that are already included by default when you create a new project.
This process can take a while depending on how many dependencies your computer has, so be sure to start it off after setting up your development environment!
It is very common to run into this error when switching operating systems. For example, if you installed Windows 10 and then install Ubuntu using the same source settings, your computer may have issues recognizing some Linux headers. This could also happen if you re-install macOS or switch from Intel to AMD chips (the other major arch type).

If you are still getting these errors after running both of those, your next step is to run the final command in this list!
Running make install is usually the last line of action needed to fix undefined symbols due to missing libraries.
This will take all of the files that were downloaded or compiled during installation and put them into a default folder where most Linux distributions have it already installed.
You can then access each file to see if they are there and working by using File > Properties to check.

If you are still getting these errors after running both of the above steps, then it is time to do something more advanced. This article will show how to fix x86-64 undefined symbols by updating your linker settings or changing the way in which software is installed on your computer.
First, we will go into some detail about what each symbol means, before giving tips on how to correct them!
What are undefined symbols?
Undefined symbols occur when a program uses a function that has been removed or not included as part of the software package.
For example, if you use Google Chrome, you may have noticed that there is an option to download other apps from the browser. However, this feature has disappeared recently (August 2018). You can no longer find the “Apps” button either, nor will downloading an app give any results.
This is because Google decided to stop supporting the platform upon which their app was built – Android OS version Nougat and lower.
It is the same with Microsoft Windows, Adobe Photoshop, and many others. They all include native functions that have been deprecated or completely removed. For instance, the photoshop command tracerutter used to work, but now it does not.
These missing functions are referred to as undefined symbols, and can be frustrating to track down. It is very important to check whether the software is compatible with newer versions of Ubuntu, as well as the operating system directly.