apbs
apbs copied to clipboard
Mac OS X makes static linking difficult
Unfortunately, this still seems to be an issue in the 3.4.1 release.
Performing C SOURCE FILE Test Intl_IS_BUILT_IN failed with the following output:
Change Dir: /tmp/apbs-20220926-39068-n0ircz/build/CMakeFiles/CMakeTmp
Run Build Command(s):/opt/homebrew/bin/gmake -f Makefile cmTC_799a3/fast && /opt/homebrew/bin/gmake -f CMakeFiles/cmTC_799a3.dir/build.make CMakeFiles/cmTC_799a3.dir/build
gmake[1]: Entering directory '/private/tmp/apbs-20220926-39068-n0ircz/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_799a3.dir/src.c.o
/opt/homebrew/Library/Homebrew/shims/mac/super/gcc-12 -DIntl_IS_BUILT_IN -fopenmp -fPIC -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk -o CMakeFiles/cmTC_799a3.dir/src.c.o -c /tmp/apbs-20220926-39068-n0ircz/build/CMakeFiles/CMakeTmp/src.c
Linking C executable cmTC_799a3
/opt/homebrew/Cellar/cmake/3.24.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_799a3.dir/link.txt --verbose=1
/opt/homebrew/Library/Homebrew/shims/mac/super/gcc-12 -fopenmp -fPIC -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_799a3.dir/src.c.o -o cmTC_799a3
Undefined symbols for architecture arm64:
"_libintl_dcgettext", referenced from:
_main in src.c.o
"_libintl_dgettext", referenced from:
_main in src.c.o
"_libintl_gettext", referenced from:
_main in src.c.o
ld: symbol(s) not found for architecture arm64
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_799a3.dir/build.make:99: cmTC_799a3] Error 1
gmake[1]: Leaving directory '/private/tmp/apbs-20220926-39068-n0ircz/build/CMakeFiles/CMakeTmp'
gmake: *** [Makefile:127: cmTC_799a3/fast] Error 2
Source file was:
#include <libintl.h>
int main(void) {
gettext("");
dgettext("", "");
dcgettext("", "", 0);
return 0;
}
Performing C SOURCE FILE Test Iconv_IS_BUILT_IN failed with the following output:
Change Dir: /tmp/apbs-20220926-39068-n0ircz/build/CMakeFiles/CMakeTmp
Run Build Command(s):/opt/homebrew/bin/gmake -f Makefile cmTC_a634d/fast && /opt/homebrew/bin/gmake -f CMakeFiles/cmTC_a634d.dir/build.make CMakeFiles/cmTC_a634d.dir/build
gmake[1]: Entering directory '/private/tmp/apbs-20220926-39068-n0ircz/build/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_a634d.dir/src.c.o
/opt/homebrew/Library/Homebrew/shims/mac/super/gcc-12 -DIconv_IS_BUILT_IN -fopenmp -fPIC -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk -o CMakeFiles/cmTC_a634d.dir/src.c.o -c /tmp/apbs-20220926-39068-n0ircz/build/CMakeFiles/CMakeTmp/src.c
Linking C executable cmTC_a634d
/opt/homebrew/Cellar/cmake/3.24.2/bin/cmake -E cmake_link_script CMakeFiles/cmTC_a634d.dir/link.txt --verbose=1
/opt/homebrew/Library/Homebrew/shims/mac/super/gcc-12 -fopenmp -fPIC -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX12.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names CMakeFiles/cmTC_a634d.dir/src.c.o -o cmTC_a634d
Undefined symbols for architecture arm64:
"_libiconv", referenced from:
_main in src.c.o
"_libiconv_close", referenced from:
_main in src.c.o
"_libiconv_open", referenced from:
_main in src.c.o
ld: symbol(s) not found for architecture arm64
collect2: error: ld returned 1 exit status
gmake[1]: *** [CMakeFiles/cmTC_a634d.dir/build.make:99: cmTC_a634d] Error 1
gmake[1]: Leaving directory '/private/tmp/apbs-20220926-39068-n0ircz/build/CMakeFiles/CMakeTmp'
gmake: *** [Makefile:127: cmTC_a634d/fast] Error 2
Source file was:
#include <stddef.h>
#include <iconv.h>
int main() {
char *a, *b;
size_t i, j;
iconv_t ic;
ic = iconv_open("to", "from");
iconv(ic, &a, &i, &b, &j);
iconv_close(ic);
}
Incidentally, I also needed to pass -DBLA_VENDOR=OpenBLAS -DCMAKE_C_FLAGS=-fopenmp
to CMake to get it this far, as well as making sure OpenMP is installed (despite -DENABLE_OPENMP=OFF
).
Originally posted by @alexreg in https://github.com/Electrostatics/apbs/issues/217#issuecomment-1258874446