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 :)