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

1、概述

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

環境:Ubuntu Server 18.04.1github

 

2、問題的出現

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

 

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

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

執行編譯後報錯blog

 

3、解決方案

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

綜上所述,應連接libm庫文件,因此正確的命令應該是這樣子的:it

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

  

問題解決!編譯

 

小結

若是之後碰到像缺乏libXXX.so文件,就指的是缺乏XXX庫文件,因此添加時直接用 gcc -lXXX 命令添加便可。class

相關文章
相關標籤/搜索