Мы создаем приложение Mac OSX, которое написано в основном в Obj-C/Cocoa. Затем приложение статически связывается с некоторыми сторонними библиотеками, написанными на C/С++ и скомпилированными нами (в командной строке, используя либо MacPorts, либо обычный "./configure && make"; все это универсальные двоичные файлы).
Приложение работает отлично, но время компиляции объявлений всегда получает эти странные предупреждения компоновщика:
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZGVN4i18n12phonenumbers9SingletonINS0_15PhoneNumberUtilEE8instanceE means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZGVN4i18n12phonenumbers9SingletonINS0_15PhoneNumberUtilEE8instanceE means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZN5boost10scoped_ptrIN4i18n12phonenumbers15PhoneNumberUtilEED1Ev means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZN4i18n12phonenumbers9SingletonINS0_15PhoneNumberUtilEE8instanceE means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
ld: warning: direct access in ___cxx_global_var_init17 to global weak symbol __ZGVN4i18n12phonenumbers9SingletonINS0_15PhoneNumberUtilEE8instanceE means the weak symbol cannot be overridden at runtime. This was likely caused by different translation units being compiled with different visibility settings.
Это происходит из библиотеки C/С++. Мы связываемся с этими libs:
- libphonenumber, который, по-видимому, вызывает 4 из 5 предупреждений. Составлено нами через "cmake".
- boost (libboost_thread-mt), ответственный за 1 предупреждение. Скомпилирован с MacPorts.
- ICU (libicudata, libicuuc, libicui18n), скомпилированный с помощью MacPorts.
- Буферы протокола, скомпилированные с помощью.. /configure & make.
Обратите внимание:
- Приложение работает отлично, несмотря на предупреждения, но мы хотели бы избавиться от них, поскольку они раздражают.
- Решение, предложенное xcode с boost: linker (Id) Предупреждение о настройках видимости не работает: "Символы, скрытые по умолчанию" всегда были "ДА",.