linux编译

cmake使用

…衆ロ難τιáo~ 提交于 2020-04-01 07:56:12
一、 基本使用 安装:下载二进制包后可直接解压使用 从源码安装则执行命令:./bootstrap; make; make install——尝试执行bootstrap失败 使用:cmake dir_path,生成工程文件或makefile文件 二、 概念 out-of-source build,与in-source build相对,即将编译输出文件与源文件放到不同目录中; 三、 基本结构 1,依赖CMakeLists.txt文件,项目主目标一个,主目录中可指定包含的子目录; 2,在项目CMakeLists.txt中使用project指定项目名称,add_subdirectory添加子目录 3,子目录CMakeLists.txt将从父目录CMakeLists.txt继承设置(TBD,待检验) 四、 语法 1. #注释 2. 变量:使用set命令显式定义及赋值,在非if语句中,使用${}引用,if中直接使用变量名引用;后续的set命令会清理变量原来的值; 3. command (args ...) #命令不分大小写,参数使用空格分隔,使用双引号引起参数中空格 4. set(var a;b;c) <=> set(var a b c) #定义变量var并赋值为a;b;c这样一个string list 5. Add_executable(${var}) <=> Add_executable

交叉编译libxml2

心已入冬 提交于 2020-04-01 01:24:58
请勿用于商业用途,转载请注明出处! xml的优势就是可以方便的管理配置项,libxml2是c语言实现的xml管理库,眼下项目须要ARM下的版本号,libxml2编译过程例如以下: 0.准备工作 下载地址:ftp://xmlsoft.org/libxml2/libxml2-git-snapshot.tar.gz <pre name="code" class="cpp">编译环境:Ubuntu 14.04 TLS 交叉编译器:arm-linux-gnueabihf-gcc 4.8.2 20130902 1. 配置编译信息 $./configure --host=arm-linux --build=i386-linux --target=arm --prefix=/usr/local/arm/libxml_arm CC=/home/lhl/buildroot-at91-buildroot-2013. 11-at91/output/host/usr/bin/arm-linux-gnueabihf-gcc --without-zlib --without-python 编译时由于提示没有python相关的头文件出错,又由于项目中不使用python相关的内容,所以没有讲python进库中,读者应该依照自己的须要要配置该选项。对于zlib相同的道理 2. 编译 $make; $make

编译内核及系统调用实验

天大地大妈咪最大 提交于 2020-03-31 14:15:25
电脑出现各种问题,在装虚拟机时也出现了各种问题,给的实验指导书也有各种问题。周四折腾一下午+晚上、周五一天、周六一天,遇到的各种问题都搞定了,实验成功了,现在贴出我的操作步骤,感觉这将会是我的最干的博客之一。 先贴出结果吧 准备工作: 我的电脑只有120G,之前一直做了个Ubuntu的启动盘用,这次没预料到实验对硬盘空间需求如此之大,只得重装虚拟机。在移动硬盘上开辟空间50G(建议不要装好系统后再扩展容量,时间耗费巨大而且ubuntu自带软件中没有硬盘分区软件,安装硬盘分区软件还需要很多依赖,烦不胜烦),在VMware Workstation上使用高级模式创建虚拟机,CPU和内存配置为2x2,4G。在创建完成ubuntu虚拟机后不要立即运行!!!因为VMtools在创建好了以后会自动加载到你刚指定的虚拟机文件夹中,在开启ubuntu虚拟机后它会和系统引导一起启动,导致系统卡死在“install vm-tools"这一行,解决的方法就是在虚拟机文件夹中找到autoinst.iso这个文件并删除(这会导致系统不能自动安装并且在装好系统后不能使用vmtools这个工具,如果想使用vmtools这个工具只能在系统安装完成后再安装,后面讲)。删除上述文件后可以启动系统安装了,,,,,,,,,,,,,安装完成后选择 设置中选择VM Workstation安装文件夹,在其中选择”linux

itop4412开发板编译QtE5.7源码

陌路散爱 提交于 2020-03-31 10:54:42
该章节用到的文件可以在网盘的“iTOP4412 开发板资料汇总(不含光盘内容)\iTOP- 4412 开发板系统源码及镜像(其他)\QtE5.7 移植资料\iTOP-4412-QtE-移植 QtE5.7 系 统.zip”文件中找到。 7.2.3.1 编译器版本 编译 QtE5.7 用到的编译器是: “arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2” 将编译器拷贝到“/usr/local/arm”目录下,并解压。 使用命令“cd”(一定要使用 root 账户),接着使用“vim .bashrc”命令,打开环境 变量配置文件。修改环境变量配置文件最底行(取消注释),如下图所示。 <ignore_js_op> 接着还需要更新一下环境变量,如下图所示,使用命令“source .bashrc”。 <ignore_js_op> 最后做一下环境变量测试。 重启下控制台后,在 Ubuntu 控制台中输入“arm-none-linux-gnueabi-gcc -v”,然 后回车,会出现如下图所示内容。 <ignore_js_op> 7.2.3.2 编译触摸 解压源码 tslib-1.4.tar.gz,然后执行如下命令。 cd tslib ./autogen.sh ./configure CC=arm-none-linux

静态库和动态库的区别

喜欢而已 提交于 2020-03-31 05:45:54
real framework中不可以使用类别 或 不可以不包含类文件 real framework 中直接调用NSClassFromString函数会返回null 需要强制加载指定类 或 直接通过类名引用 linux中静态库和动态库的区别 一、不同 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。 1. 静态函数库 这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。 2. 动态函数库 这类库的名字一般是libxxx.so;相对于静态函数库,动态函数库在编译的时候 并没有被编译进目标代码中,你的程序执行到相关函数时才调用该函数库里的相应函数,因此动态函数库所产生的可执行文件比较小。由于函数库没有被整合进你的程序,而是程序运行时动态的申请并调用,所以程序的运行环境中必须提供相应的库。动态函数库的改变并不影响你的程序,所以动态函数库的升级比较方便。 二、相同 都是由*.o目标文件生成 ios 开发中 动态库 与静态库的区别 使用静态库的好处 1,模块化,分工合作 2

1.1 C语言概念

会有一股神秘感。 提交于 2020-03-30 20:46:40
1.1 基本概念 源文件: 源文件即是源代码文件,C语言源文件后缀名是.c。 头文件: 头文件后缀名为. h(head,头),c语言代码由头文件和源文件组成。 关键字: 关键字是c语言征用的一些英文字母或者单词,这些字在c语言中代表着特殊含义,已经被c语言定义好了,轮不到我们再次随意定义使用了。 注释: c语言中注释以 // 开头,或者 / / ,注释是给程序员看的,不是给机器看的。也就是说,程序员写注释给其他人看,让人明白自己为什么要这么写。但是编译器编译程序的时候是忽略注释内容的。(一个代码品格良好的程序员,注释是写的明明白白的) 变量:会变化的量,c语言中程序是用变量来进行计算的。 函数:函数是c语言的一个基本组成单位,一个c语言程序其实是由很多个函数组成的。函数可以调用其他函数来完成运算。 1.2 C语言开发的一般步骤 第一步 编辑源代码(使用vi或者其他编辑器) 第二步 编译。编译就是编译器把源程序转化成可执行的过程,编译要用到编译器。我们在linux中使用编译器一般是gcc。 譬如:gcc hello.c 把当前目录下hello.c文件编译,得到的可执行文件名字a.out,也可以自己指定编译后生成的可执行程序的名字,使用gcc hello.c -o hello 第三步 执行编译。执行编译生成的可执行程序,执行方式是 ./hello 第四部 调试

python--For the first time

情到浓时终转凉″ 提交于 2020-03-30 06:59:08
一、 Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum)。 最新的TIOBE排行榜: Python已经进入三甲了啊! Python可以应用于众多领域, 如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。 目前使用Python语言的公司 如:Youtube、Dropbox、BT、Quora、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。 使用Python做的事有: 自动化运维、自动化测试、大数据分析、爬虫、Web 等。 Python主要应用领域 :    云计算: 云计算最火的语言, 典型应用OpenStack    WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣等, 典型WEB框架有Django。    科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas。    系统运维: python脚本等。    金融: 量化交易,金融分析,在金融工程领域等。    图形GUI : PyQT, WxPython,TkInter Python在一些公司的应用: CIA: 美国中情局网站就是用Python开发的。 NASA: 美国航天局

【零】基于open62541项目编译单独的open62541源文件和头文件

天涯浪子 提交于 2020-03-30 05:53:54
  本文是如何编译C语言的OPC UA源码open62541生成适用于Windows平台单独的.c和.h的教程,本文使用的是Windows 10 家庭版,cmake-3.15.0-rc3-win64-x64,Visual Studio Community 2017 首先安装git,这个网上一堆教程,我就不详细写了 安装cmake,这个可以直接在 官网下载 ,安装的网上也有相应的教程,一路next就行 下载open62541的项目工程,可以直接去 github 下载压缩包,也可以用下面的命令直接clone git clone git@github.com:FishEatingCat/open62541.git 完事之后用管理员运行cmake 添加source code和 build 地址之后点configure进行配置 选择编译之后用于打开项目的IDE 完成后点击configure,然后选择编译条件,把鼠标移到上面就能看到该选项的简单介绍。 我只选择了UA_ENABLE_AMALGAMATION,这个选项是生成单独源文件和头文件的命令;黄色区域是编译的文件适用的平台等一些信息,如果有需要可以换成linux、OS X、openBSD以及FreseRtos,然后再点一次编译 如果想查看其编译条件的可以查看 官方文档 编译完事后点击generate 可以看到之前灰色的open

Linux系统C语言开发环境学习

强颜欢笑 提交于 2020-03-30 03:13:05
项目 内容 这个作业属于哪个课程 课程链接 这个作业的要求在哪里 作业要求 学号-姓名 17043229-钟亮 作业学习目标 了解Linux系统C语言编程环境 ,学习Linux环境C语言开发步骤 1.安装C语言开发环境 gcc -v ##查看gcc版本信息 sudo yum groupinstall "Development Tools" ##安装gcc make -v ##查看make版本信息 2.简单C语言练习 (1)通过man命令查看帮助文档 man gcc ##查看gcc帮助 (2)命令行模式简单C语言编译链接等操作 通过vim编辑器编写一个简单的C语言程序,如写一个输出自己学号的程序。 我们输入完了源程序,接下来我们进行C语言程序编译的四个阶段,预编译,编译,汇编,链接 a) 预编译 b)编译 c)汇编 这里生成的不是文本文件了,是二进制文件,我们可以通过objdump命令来反汇编该文件来分析文件内容 d)链接 可执行文件是二进制文件,同样需要用objdump命令来反汇编该文件分析文件内容 objdump -d test e)运行 (3) 多文件编译 我们在exp4文件夹下面再建一个文件夹mfc(multi-fifiles compile) 在该文件夹下面创建5个文件,文件名分别如下: 每个文件的内容分别如下: 完成上面的代码输入,接下来我们进行编译,对于多文件编译

Linux内核分析作业第七周

岁酱吖の 提交于 2020-03-28 22:32:45
一、 预处理、编译、链接 gcc hello.c -o hello. gcc编译源代码生成最终可执行的二进制程序,GCC后台隐含执行了四个阶段步骤。 预处理 → 编译 → 汇编 → 链接 预处理:编译器将C源代码中包含的头文件编译进来和执行宏替换等工作。 gcc -E hello.c -o hello.i   编译:gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。 gcc –S hello.i –o hello.s-S:该选项只进行编译而不进行汇编,生成汇编代码。   汇编:把编译阶段生成的 .s文件 转成二进制目标代码. gcc –c hello.s –o hello.o   链接:将编译输出 .o文件 链接成最终的可执行文件。 gcc hello.o –o hello   运行:若链接没有-o指明,则生成可执行文件默认为 a.out ./hello 二、可执行文件    1、在windows环境下,只要双击一个.exe的文件就可以执行一个程序,这个以.exe结尾的文件就是一个可执行文件。在andriod系统下,一个.apk的文件就是一个可执行文件,在linux系统下,可执行文件在linux环境下并没有什么特殊的后缀标记,只是在生成该文件时,它的属性设置了可执行(就是‘x’),那么他就是属于可执行文件。   2