ld игнорирует ld.so.conf

ld игнорирует ld.so.conf

Это мое/etc/ld.so.conf

/usr/local/lib64
/usr/local/lib
include /etc/ld.so.conf.d/*.conf

В каталоге /etc/ld.so.conf.d/содержится mysql-x86_64.confтолько одна строка:/usr/lib64/mysql

Каталог /usr/lib64/mysql[указанный в .confфайле] содержит следующие файлы:

total 45,961,216
drwxr-xr-x   2 root root      4,096 Apr 11 17:20 ./
drwxr-xr-x 121 root root     81,920 Mar 30 20:01 ../
-rw-r--r--   1 root root 28,951,398 Dec  9 21:40 libmysqlclient.a
lrwxrwxrwx   1 root root         20 Dec  9 21:56 libmysqlclient.so -> libmysqlclient.so.21*
lrwxrwxrwx   1 root root         25 Dec  9 21:56 libmysqlclient.so.21 -> libmysqlclient.so.21.1.19*
-rwxr-xr-x   1 root root 16,869,104 Dec  9 21:40 libmysqlclient.so.21.1.19*
-rw-r--r--   1 root root     44,910 Dec  9 21:36 libmysqlservices.a

Запуск ldconfig -p | grep mysqlвозвращает следующее:

    libmysqlclient.so.21 (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so.21
    libmysqlclient.so (libc6,x86-64) => /usr/lib64/mysql/libmysqlclient.so

Когда я пытаюсь привязать очень маленькую тестовую программу MySQL, я получаю следующую ошибку:

/usr/lib64/gcc/x86_64-suse-linux/9/../../../../x86_64-suse-linux/bin/ld: cannot find -lmysqlclient

Добавление -L/usr/lib64/mysqlв компоновщик работает.

Мой вопрос:

Согласно этомуотвечатьи другая документация, найденная в интернете, lddучитывает содержимое файла /etc/ld.so.conf- почему в моем случае содержимое игнорируется? Что я делаю не так?

решение1

ld.so.conf— это файл конфигурации для ld.soдинамического компоновщика времени выполнения.

ldигнорирует его намеренно. Он имеет свои собственные значения по умолчанию, дополненные -L. Обычно путь поиска также определяется компилятором, управляющим им — см. gcc -print-search-dirsдля GCC.

LD_LIBRARY_PATHтакже влияет только ld.so,нетld.

Смотрите такжеКаковы исполняемые файлы ELF для статического компоновщика, динамического компоновщика, загрузчика и динамического загрузчика?

Связанный контент