ld ignora ld.so.conf

ld ignora ld.so.conf

Este é meu/etc/ld.so.conf

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

O diretório /etc/ld.so.conf.d/contém mysql-x86_64.confapenas esta linha:/usr/lib64/mysql

O /usr/lib64/mysqldiretório [listado no .confarquivo] contém estes arquivos:

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

A execução ldconfig -p | grep mysqlretorna isto:

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

Quando tento vincular um programa de teste MySQL muito pequeno, recebo este erro:

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

Adicionar -L/usr/lib64/mysqlao vinculador funciona.

Minha pergunta:

De acordo com issorespondere outras documentações encontradas na internet lddconsideram o conteúdo do /etc/ld.so.confarquivo - por que, no meu caso, o conteúdo é ignorado? O que estou fazendo de errado?

Responder1

ld.so.confé o arquivo de configuração ld.sodo vinculador dinâmico de tempo de execução.

ldignora, intencionalmente. Ele tem seus próprios padrões, complementados por -L. Normalmente, o caminho de pesquisa também é determinado pelo compilador que o dirige - consulte gcc -print-search-dirsGCC.

LD_LIBRARY_PATHtambém afeta apenas ld.so,nãold.

Veja tambémquais são os arquivos ELF executáveis, respectivamente, para vinculador estático, vinculador dinâmico, carregador e carregador dinâmico?

informação relacionada