Если у вас есть код, который должен вести себя по-разному в зависимости от того, связан ли он с Bionic или Glibc, это можно и нужно определить во время компиляции. Bionic и Glibc в любом случае несовместимы в двоичном виде, поэтому вам нужно зафиксировать один набор заголовков во время компиляции.
#if __BIONIC__
/* Bionic-specific code */
#elif __GLIBC__
/* Glibc-specific code */
#else
#error "This C library is not supported"
#endif
Вы не найдете никакой информации в /proc
, потому что /proc
содержит информацию о ядре, а не о библиотеке C.
Теоретически в системе можно разместить сколько угодно библиотек C. Однако это было бы очень необычно для встроенной системы, поскольку они обычно пытаются уменьшить размер кода. Единственная система, в которой я ожидаю несколько библиотек C, находится на встроенной машине разработчика, если этот разработчик не занимается кросс-компиляцией (что, во-первых, редко). Кроме того, Bionic используется только на Android, а на Android используется только Bionic, поэтому все системы Android имеют Bionic, а другие системы не имеют Bionic. В системах Linux, отличных от Android, есть другая библиотека, либо Glibc, либо (во встроенных системах) какая-то другая библиотека, такая как uClibc или Dietlibc.
person
Gilles 'SO- stop being evil'
schedule
26.08.2012
-static
при ссылке. Используйте утилитуfile
, чтобы узнать, является ли исполняемый файл статическим или динамическим. Я используюstrings
для перечисления библиотек и точек входа, используемых динамически подключаемым исполняемым файлом. - person sawdust   schedule 27.08.2012strace
будет показывать только то, что над файлами библиотеки были выполнены операции открытия/ммап/закрытия файлов. И вам нужно будет запустить команду на целевой плате. Так чтоstrings
не опечатка. - person sawdust   schedule 28.08.2012