Nunca he tenido un mac
Podrías solucionarlo cambiando el orden de compilado si ese IDE te permitiera hacerlo, algo que desconozco y si no compilarlo por línea de comando en el orden inverso.
https://www.appletonaudio.com/blog/2013/linking-c-static-libraries-with-duplicate-symbols/
Luego otra alternativa usar la opcion --whole-archive en el parámetro de la parte del enlace a las librerías, que desconozco como se haría desde ese IDE pero que podrías poner como se muestra en el enlace de abajo desde la línea de comando.
https://stackoverflow.com/questions/9093891/gcc-detect-duplicate-symbols-functions-in-static-libraries
Y ésto otro que no puedo probar :
--no-define-common
This option inhibits the assignment of addresses to common symbols. The script command "INHIBIT_COMMON_ALLOCATION" has the same effect.
The --no-define-common option allows decoupling the decision to assign addresses to Common symbols from the choice of the output file type; otherwise a non-Relocatable output type forces assigning addresses to Common symbols. Using --no-define-common allows Common symbols that are referenced from a shared library to be assigned addresses only in the main program. This eliminates the unused duplicate space in the shared library, and also prevents any possible confusion over resolving to the wrong duplicate when there are many dynamic modules with specialized search paths for runtime symbol resolution.
O
--traditional-format
For some targets, the output of ld is different in some ways from the output of some existing linker. This switch requests ld to use the traditional format instead.
For example, on SunOS, ld combines duplicate entries in the symbol string table. This can reduce the size of an output file with full debugging information by over 30 percent. Unfortunately, the SunOS "dbx" program can not read the resulting program ("gdb" has no trouble). The --traditional-format switch tells ld to not combine duplicate entries.
https://linux.die.net/man/1/ld
Podrías solucionarlo cambiando el orden de compilado si ese IDE te permitiera hacerlo, algo que desconozco y si no compilarlo por línea de comando en el orden inverso.
https://www.appletonaudio.com/blog/2013/linking-c-static-libraries-with-duplicate-symbols/
Luego otra alternativa usar la opcion --whole-archive en el parámetro de la parte del enlace a las librerías, que desconozco como se haría desde ese IDE pero que podrías poner como se muestra en el enlace de abajo desde la línea de comando.
https://stackoverflow.com/questions/9093891/gcc-detect-duplicate-symbols-functions-in-static-libraries
Y ésto otro que no puedo probar :
--no-define-common
This option inhibits the assignment of addresses to common symbols. The script command "INHIBIT_COMMON_ALLOCATION" has the same effect.
The --no-define-common option allows decoupling the decision to assign addresses to Common symbols from the choice of the output file type; otherwise a non-Relocatable output type forces assigning addresses to Common symbols. Using --no-define-common allows Common symbols that are referenced from a shared library to be assigned addresses only in the main program. This eliminates the unused duplicate space in the shared library, and also prevents any possible confusion over resolving to the wrong duplicate when there are many dynamic modules with specialized search paths for runtime symbol resolution.
O
--traditional-format
For some targets, the output of ld is different in some ways from the output of some existing linker. This switch requests ld to use the traditional format instead.
For example, on SunOS, ld combines duplicate entries in the symbol string table. This can reduce the size of an output file with full debugging information by over 30 percent. Unfortunately, the SunOS "dbx" program can not read the resulting program ("gdb" has no trouble). The --traditional-format switch tells ld to not combine duplicate entries.
https://linux.die.net/man/1/ld