在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

相关文章
相关标签/搜索