在Linux下使用gcc編譯mesa文件報undefined reference to symbol 'sin@@GLIBC_2.2.5和DSO missing from command line兩個錯誤的解決方案


一、概述

在Linux系統下使用gcc編譯用C語言寫的mesa的示例程序。

環境:Ubuntu Server 18.04.1

 

二、問題的出現

在Ubuntu下安裝好mesa所需的庫文件,將目標文件從github上克隆下來之后編譯。

 

以上截取的是用gcc編譯目標文件和傳參的介紹:

  • gcc:源程序將用gcc編譯器進行編譯;
  • osdemo,c:將要被編譯的源程序;
  • -lOSMesa:鏈接OSMesa庫;
  • -lGLU:鏈接GLU庫;
  • -lGL:鏈接GL庫;
  • -o:指定目標名稱;
  • osdemo:編譯后生成的文件名。

執行編譯后報錯

 

三、解決方案

報錯信息第一行說是在源程序中有個sin函數沒有定義;報錯信息第二行說是缺少libm.so這個文件。

綜上所述,應鏈接libm庫文件,所以正確的命令應該是這樣子的:

gcc osdemo.c -lm -lOSMesa -lGLU -lGL -o osdemo

  

問題解決!

 

小結

如果以后碰到像缺少libXXX.so文件,就指的是缺少XXX庫文件,所以添加時直接用 gcc -lXXX 命令添加即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM