在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 命令添加即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章