Estou executando em uma máquina Linux do RHEL 6.8. Eu estou tentando construir vários pacotes de tarballs de origem / git-repos / whatefer sem alterar a configuração do sistema (em root ou sudo).
Estou executando em uma máquina RHEL 6.8:
bash-4.1$ cat /etc/issue
Red Hat Enterprise Linux Workstation release 6.8 (Santiago)
Kernel \r on an \m
openssl-devel
está instalado:
bash-4.1$ rpm -q -a | grep openssl
openssl-1.0.1e-48.el6.i686
openssl098e-0.9.8e-20.el6_7.1.x86_64
openssl098e-0.9.8e-20.el6_7.1.i686
openssl-devel-1.0.1e-48.el6.i686
openssl-1.0.1e-48.el6.x86_64
openssl-devel-1.0.1e-48.el6.x86_64
Então, espero que este comando retorne alguma saída, para que quando eu criar pacotes a partir do código fonte que usam o pkg-config, eles encontrem o valor de CFLAGS que eles precisam:
bash-4.1$ pkg-config --cflags openssl
Mas ele retorna apenas uma nova linha. Por quê?
Mais depuração:
Mostre o arquivo que está usando:
bash-4.1$ pkg-config --debug --list-all 2>&1 | grep 'Will find package.*openssl'
Will find package 'openssl' in file '/usr/lib64/pkgconfig/openssl.pc'
Mostre o arquivo que ele deve estar lendo:
bash-4.1$ cat /usr/lib64/pkgconfig/openssl.pc
prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib64
includedir=${prefix}/include
Name: OpenSSL
Description: Secure Sockets Layer and cryptography libraries and tools
Version: 1.0.1e
Requires:
Libs: -L${libdir} -lssl -lcrypto
Libs.private: -Wl,-z,relro -ldl -lz -L/usr/lib -lgssapi_krb5 -lkrb5 -lcom_err -lk5crypto -lresolv
Cflags: -I${includedir} -I/usr/include
Ampliando o grep:
bash-4.1$ pkg-config --debug --list-all 2>&1 | grep 'openssl'
File 'openssl.pc' appears to be a .pc file
Will find package 'openssl' in file '/usr/lib64/pkgconfig/openssl.pc'
Looking for package 'openssl'
Looking for package 'openssl-uninstalled'
Reading 'openssl' from file '/usr/lib64/pkgconfig/openssl.pc'
Parsing package file '/usr/lib64/pkgconfig/openssl.pc'
Unknown keyword 'Libs.private' in '/usr/lib64/pkgconfig/openssl.pc'
Removing -I/usr/include from cflags for openssl
Removing -I/usr/include from cflags for openssl
Removing -L /usr/lib64 from libs for openssl
Adding 'openssl' to list of known packages, returning as package 'openssl'
openssl OpenSSL - Secure Sockets Layer and cryptography libraries and tools
bash-4.1$
Hmmm, o que é que Removing -I/usr/include from cflags for openssl
está fazendo lá?
Além disso, a variável Cflags
está definida. Isso é um bug? Deveria ser cflags
?
Além disso, baixei e criei meu próprio pkg-config
, versão 0.29.2, e ele apresenta o mesmo comportamento. Então estou suspeitando de um bug no arquivo openssl.pc
, mas não tenho certeza.
Mesmo assim, qual é a correção além de exportar valores codificados de CFLAGS
e LDFLAGS
antes de chamar os vários pacotes ./configure
scripts?