Где функции xxx $ UNIX2003 определены в osx? - PullRequest
0 голосов
/ 12 июля 2010

У меня есть исполняемый файл osx, который успешно работает.Когда я запускаю

nm mono | grep UNIX

на нем, я получаю следующие результаты:

     U _accept$UNIX2003
     U _bind$UNIX2003
     U _closedir$UNIX2003
     U _connect$UNIX2003
     U _fwrite$UNIX2003
     U _getpeername$UNIX2003
     U _getsockname$UNIX2003
     U _listen$UNIX2003
     U _mmap$UNIX2003
     U _mprotect$UNIX2003
     U _munmap$UNIX2003
     U _nanosleep$UNIX2003
     U _opendir$UNIX2003
     U _pthread_cond_timedwait$UNIX2003
     U _pthread_cond_wait$UNIX2003
     U _pthread_join$UNIX2003
     U _recv$UNIX2003
     U _recvfrom$UNIX2003
     U _recvmsg$UNIX2003
     U _semctl$UNIX2003
     U _send$UNIX2003
     U _sendmsg$UNIX2003
     U _sendto$UNIX2003
     U _setenv$UNIX2003
     U _strftime$UNIX2003
     U _unsetenv$UNIX2003

Поскольку приложение работает успешно, очевидно, что ОС способна успешно разрешать эти символы при загрузке приложения.,Я пытаюсь выяснить, какая системная библиотека определяет эти символы.

Один вероятный подозреваемый - это /usr/lib/libSystem.B.dylib, однако при запуске

nm /usr/lib/libSystem.B.dylib | grep UNIX

получаетсячтобы там не было символов с суффиксом $ UNIX2003.

Я хотел бы выяснить, где эти символы определены, в связи с проблемой сборки в отдельной программе, которая не запускается успешно, но завершается с ошибкой ввремя выполнения, потому что не удается найти _opendir $ UNIX2003.

1 Ответ

4 голосов
/ 13 июля 2010

См. Конкретное обсуждение в этом яблочном документе, Замечания к выпуску Symbol Variants .

Все они определены в /usr/lib/libSystem.B.dylib. Обратите внимание, что это универсальный dylib, т.е. содержит как 32-битные, так и 64-битные версии. На вашем ящике вы увидите что-то вроде

/usr/lib$ nm -arch i386 libSystem.dylib  | grep fputs
000c22c0 T _fputs
000328bc T _fputs$UNIX2003
/usr/lib$ nm -arch x86_64 libSystem.dylib  | grep fputs
00000000000551cf T _fputs

Дело в том, что в 64-битном варианте не существует не-SUS-совместимых версий этих функций. Так что нет варианта $UNIX2003. Я полагаю, что проблема с линковкой связана с поддерживаемой архитектурой вашей библиотеки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...