gcc命令

Makefile入门

Deadly 提交于 2020-04-07 10:28:40
1 手动编译链接 我们知道源文件生成可执行文件的过程可能需要一些依赖文件(头文件或者其他源文件)。[2]中提到对于C语言,产生可执行程序包括这样的步骤: 1 预处理源文件(.c) 替换预处理命令(如 #define) 展开头文件(.h,包括静态链接库的头文件)到引用的源文件 2 依次编译处理过的源文件,然后进行汇编,生成对应的目标文件(.o) 3 链接(静态链接)目标文件和静态链接库(静态链接库的源文件生成的目标文件,.a),生成可执行的二进制文件。 我们假设这里有三个c文件: hello.c #include<stdio.h>//sys lib head file int main() { int a=33; int b=22; printf("Min value is %d\n",min(a,b)); printf("Max value is %d\n",max(a,b)); return 0; } max.c int max(int a,int b) { return a>b?a:b; } min.c int min(int a,int b) { return a<b?a:b; } 很明显,hello.c编译必须依赖max.c和min.c。我们手动编译生成可执行文件,并执行: fsj@ubuntu:~/templates$ ls hello.c max.c min.c fsj

linux后台开发常用调试工具

独自空忆成欢 提交于 2020-03-24 01:15:36
linux后台开发常用调试工具 一、编译阶段 nm 获取二进制文件包含的符号信息 strings 获取二进制文件包含的字符串常量 strip 去除二进制文件包含的符号 readelf 显示目标文件详细信息 objdump 尽可能反汇编出源代码 addr2line 根据地址查找代码行 二、运行阶段 gdb 强大的调试工具 ldd 显示程序需要使用的动态库和实际使用的动态库 strace 跟踪程序当前的系统调用 ltrace 跟踪程序当前的库函数 time 查看程序执行时间、用户态时间、内核态时间 gprof 显示用户态各函数执行时间 valgrind 检查内存错误 mtrace 检查内存错误 time(查看程序执行时间、用户态时间、内核态时间) root@test:/home/fengpan# time ps PID TTY TIME CMD 27169 pts/19 00:00:01 bash 30410 pts/19 00:00:00 ps real 0m0.077s user 0m0.014s sys 0m0.009s ldconfig    是一个动态链接库管理命令。为了让动态链接库为系统所共享,需运行动态链接库的管理命令--ldconfig。 ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so

Linux上安装使用boost入门指导

本小妞迷上赌 提交于 2020-03-20 12:55:07
Data Mining Linux上安装使用boost入门指导 获得boost boost分布 只需要头文件的库 使用boost建立一个简单的程序 准备使用boost二进制文件库 把你的程序链接到boost库 1.获得boost 下载boost_1_46_1.tar.bz2 解压 2.boost分布 boost_1_46_1.........................boost根目录   boost/.....................................所有boost头文件   libs/........................................Tests,.cpps,docs等的库文件 注意:   (1)boost根目录(通常是/usr/local/boost_1_46_1)想到$BOOST_ROOT变量中   (2)编译程序时如果用到boost库,需要指定头文件路径-I$BOOST_ROOT   (3)因为所有头文件都在boost文件夹下,并且头文件都是hpp后缀,所#include形如:     #include <boost/whaever.hpp> 3.只需要头文件的库   绝大多数的boost库都是header-noly的:它们完全由包含模板和inline函数的头文件组成,不需要单独编译和二进制库文件

Hadoop自己编译Hadoop安装包

。_饼干妹妹 提交于 2020-03-06 10:38:25
CentOS-6.7 编译 hadoop-2.6.5 (只需输入红色命令即可) 目录 1、阅读编译文档 .............................................................................................................................1 2、准备编译环境 .............................................................................................................................2 3、安装 gcc .....................................................................................................................................2 4、安装 gcc-c++ ..............................................................................................................................2

笔记:Linux环境C语言复习(1)//C语言编译过程

浪尽此生 提交于 2020-02-29 19:34:10
目前对C语言感性的理解:C语言,就是一门语言,和英语、日语一样。本科时候学过谭浩强的红皮书,那是一本语法书,和中学的英文语法书没有太大的区别,规定一系列的约定俗成的规范(复数名词后要加s;定义整型变量前面要用int修饰),就是强行记忆,没有什么捷径。语法很重要,学会语法是进入这个语系世界的钥匙。但是,学会语法和学会语言是两件事情。我和刘慈欣都熟练掌握中文语法,但是他能写《三体》获得雨果奖,而我写个开题报告都要被导师骂一顿(苦笑)。语言能力的高低,最终还是体现在思维的深度和广度,语法不过是一种人机的通讯协议。自知能力有限,不敢谈C语言,只是总结一些C语言语法和原理以供日后复习。 C语言编译过程 在Linux环境下,我们编译一个.c文件一般直接使用gcc编译器执行“gcc 文件名.c” 就可以获取二进制可执行文件a.out,其实编译器帮我们完成了很多任务。以编译unicorn.c文件为例,gcc编译器实际编译生成二进制可执行文件的过程如下: 1)gcc -E unicorn.c -o unicorn.i //编译器执行与处理指令 2)gcc -S unicorn.i -o unicorn.s //编译器对预处理文件进行编译,生成汇编文件 3)gcc -c unicorn.s -o unicorn.o //编译器对汇编文件进行汇编,生成二进制文件 //通常第二、三步可统一为一步称为编译

Ubuntu12.04嵌入式交叉编译环境arm-linu-gcc搭建过程,图解

删除回忆录丶 提交于 2020-02-25 02:44:59
安装环境 Linux版本:Ubuntu 12.04 内核版本:Linux 3.5.0 交叉编译器版本:arm-linux-gcc-4.4.3 这个版本的交叉编译器我已经上传到了资源上,可以随便下载, 点此下载 安装前的絮叨 首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。 交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。 那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机

Ubuntu12.04嵌入式交叉编译环境arm-linu-gcc搭建过程,图解

旧时模样 提交于 2020-02-25 02:43:09
转载: 王文松的博客Ubuntu12.04嵌入式交叉编译环境arm-linu-gcc搭建过程,图解 安装环境 Linux版本:Ubuntu 12.04 内核版本:Linux 3.5.0 交叉编译器版本:arm-linux-gcc-4.4.3 这个版本的交叉编译器我已经上传到了资源上,可以随便下载, 点此下载 安装前的絮叨 首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。 交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。 那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器

Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解

删除回忆录丶 提交于 2020-02-25 02:42:27
本文转载自: Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解 安装前的絮叨 首先简单介绍一下,所谓的搭建交叉编译环境,即安装、配置交叉编译工具链。在该环境下编译出嵌入式Linux系统所需的操作系统、应用程序等,然后再上传到目标机上。 交叉编译工具链是为了编译、链接、处理和调试跨平台体系结构的程序代码。对于交叉开发的工具链来说,在文件名称上加了一个前缀,用来区别本地的工具链。例如,arm-linux-表示是对arm的交叉编译工具链;arm-linux-gcc表示是使用gcc的编译器。除了体系结构相关的编译选项以外,其使用方法与Linux主机上的gcc相同,所以Linux编程技术对于嵌入式同样适用。不过,并不是任何一个版本拿来都能用,各种软件包往往存在版本匹配问题。例如,编译内核时需要使用arm-linux-gcc-4.3.3版本的交叉编译工具链,而使用arm-linux-gcc-3.4.1的交叉编译工具链,则会导致编译失败。 那么gcc和arm-linux-gcc的区别是什么呢?区别就是gcc是linux下的C语言编译器,编译出来的程序在本地执行,而arm-linux-gcc用来在linux下跨平台的C语言编译器,编译出来的程序在目标机(如ARM平台)上执行,嵌入式开发应使用嵌入式交叉编译工具链。 安装步骤 1、将压缩包arm-linux-gcc-4

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found的解决办法

牧云@^-^@ 提交于 2020-02-19 19:01:28
原因 缺少GLIBCXX_3.4.15版本,或是更高的版本。 场景描述 在CentOS 6.6 64bit上我将gcc从4.4.7版本升级到4.8.3以便让其支持c++11标准,然后我安装node-sass时出现了这个错误 解决过程 使用strings命令来查看报错的动态库/usr/lib64/libstdc++.so.6中是否含有GLIBCXX_3.4.15? strings /usr/lib64/libstdc++.so.6|grep GLIBCXX GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 GLIBCXX_3.4.4 GLIBCXX_3.4.5 GLIBCXX_3.4.6 GLIBCXX_3.4.7 GLIBCXX_3.4.8 GLIBCXX_3.4.9 GLIBCXX_3.4.10 GLIBCXX_3.4.11 GLIBCXX_3.4.12 GLIBCXX_3.4.13 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH    考虑到我刚刚升级gcc,我继续查找其它目录下的同名库 strings /usr/local/lib64/libstdc++.so.6|grep GLIBCXX GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2

wxWidgets的安装编译、相关配置、问题分析处理

匆匆过客 提交于 2020-02-19 01:54:44
一、介绍部分 (win7 下的 GUI 效果图见 本篇文章的最后部分截图2张) wxWidgets是一个开源的跨平台的C++构架库(framework),它可以提供GUI( 图形用户界面 )和其它工具。目前的2.x版本支持所有版本的Windows、带GTK+或Motif的Unix和MacOS。相当于大家熟悉的 VC++。 参考介绍: http://www.cnblogs.com/nokiaguy/archive/2009/01/27/1381071.html http://www.baidu.com/s?wd=wxWidgets http://zh.wikipedia.org/zh/WxWidgets 二、wxWidgets的安装与编译: 二.1 基础部分 编译是少不了的操作,即使你下载的是安装包,因为这个安装包只是相当于自解压包,我们还需要将其进行编译,才能得到wxWidgets在Windows可用的库。 如果你在参考了许多编译文档或教程之后发现还是没有编译出某些库文件,如 wxbase28u_gcc_custom.dll libwxmsw28ud_gl libwxmsw28u_gl libwxmsw28u_dbgrid libwxmsw28ud_dbgrid wxbase28ud_gcc_custom.dll wxbase28u_gcc_custom.dll