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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C/C++基础

Linux下使用gdb调试core文件

当程序运行过程中出现Segmentation fault (core dumped)错误时,程序停止运行,并产生core文件。core文件是程序运行状态的内存映...

2103
来自专栏极客慕白的成长之路

使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析

有时候我们需要直接用jdk提供的java命令来执行class文件让软件运行起来,特别是很多初学者,但经常会发现如下提示:

1233
来自专栏Create Sun

mvc+webapi 项目架构

首先项目是mvc5+webapi2.0+orm-dapper+ef codefirst+redis+quartz.net+actionmq。 1.项目框架层次结...

44316
来自专栏Python

进程池、线程池、回调函数

一 进程池 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间。多进程是实现并发的手段之一,需要...

4418
来自专栏蓝天

配置VIM语法高亮及自动缩进

原文:http://blog.sina.com.cn/s/blog_601331150100gjmk.html

1584
来自专栏我是攻城师

最近工作中遇到ElasticSearch一些问题总结

57510
来自专栏mwangblog

Linux文件操作

1714
来自专栏小白安全

小白博客 linux常用操作命令

常用指令 ls   显示文件或目录      -l 列出文件详细信息l(list)      -a 列出当前目录下所有文件及目录,包括隐藏的a...

2897
来自专栏企鹅号快讯

使用Symfony的Console组件构建命令行程序

我们新开设一门视频课程《构建命令行程序》。主要讲解如何使用symfony的console组件,构建命令行应用。在我们的印象中,php程序大部分是通过浏览器执行(...

2478
来自专栏Kevin-ZhangCG

Linux常用命令总结

$find /etc -size +163840 -a -size -204800

1181

扫码关注云+社区

领取腾讯云代金券