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