Estou tentando compilar a Biblioteca Point Cloud da fonte ( link ). Depois de executar o cmake e make, recebo o seguinte erro de vinculação:
Linking CXX executable ../../bin/pcl_convert_pcd_ascii_binary
../../lib/libpcl_io.so.1.7.2: undefined reference to 'png_set_longjmp_fn'
Como novato, não tenho certeza do que esse erro significa, mas estou assumindo: o arquivo executável plc_convert_pcd_ascii_binary
que está tentando criar precisa ser vinculado à biblioteca libpcl_io.so.1.7.2
, mas essa biblioteca contém a função png_set_longjump_fun
e a definição desta função não pode ser encontrada?
Por isso, tentei analisar algumas questões semelhantes no Stack Overflow e verifica-se que png_set_longjump_fun
está contido na biblioteca libpng
, mas foi introduzido apenas após libpng-1.4.x
. Depois de executar dpkg -l | grep libpng*
, recebo a seguinte saída:
ii libpng12-0:amd64 1.2.50-1ubuntu2 amd64 PNG library - runtime
ii libpng12-dev 1.2.50-1ubuntu2 amd64 PNG library - development
Portanto, parece que preciso atualizar de libpng12-dev
para pelo menos libpng14-dev
. No site da libpng, vejo que posso fazer o download da fonte para a versão mais recente (mas a versão mais recente que eu posso obter do apt-get
é apenas libpng12-dev
). Mas estou preocupado que possa haver alguns conflitos se eu tiver uma versão instalada via apt-get e outra versão instalada manualmente. No entanto, desinstalar libpng12-dev
pode causar problemas se houver pacotes que dependam disso, mas não sejam compatíveis com a versão mais recente.
libpng12-dev
e, em seguida, instalar a nova versão manualmente ou simplesmente instalar a nova versão, mantendo a versão antiga. E se eu fizer o último, como posso ter certeza de que o binário PCL que estou tentando compilar, se vinculará a essa nova biblioteca, em vez da antiga?
Obrigado :)