linux编译

02 cmake使用案例

余生颓废 提交于 2020-02-07 07:42:32
本章节通过一个工程介绍下cmake工程各个模块。使用JetBrains Clion开发工具组织代码。 https://github.com/jasbin2008/cmake-learn.git 1. 多个源文件组织 创建一个工程,添加以下文件: 操作步骤: 1)在根CMakeLists.txt中配置所有子目录下的源文件 # ./CMakeLists.txt cmake_minimum_required(VERSION 3.10) PROJECT(PROJECT_ONE) add_executable(main main.cpp mod1/mod1.cpp mod1/mod1_func.cpp) # 指明需要的源代码文件就好 2)在main.cpp中添加mod1.h,直接调用 2. 使用动态库 现在以动态库的形式重新构建mod1: 1)在mod1文件夹中创建CMakeLists.txt,用于创建动态库mod1 # ./mod1/CMakeLists.txt add_library(mod1 SHARED mod1.cpp mod1_func.cpp) 2)在根目录下的CMakeLists.txt中配置mod1 # ./CMakeLists.txt cmake_minimum_required(VERSION 3.5) PROJECT(PROJECT_ONE) add

Python之路 - Day1 - Python基础1

佐手、 提交于 2020-02-07 00:37:45
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是什么 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 一、 Python介绍 Python的创始人为吉多·范·罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范·罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 最新的TIOBE排行榜,Python占据第三,仅次于Java和C。 Python崇尚优美、清晰、简单,是一个优秀并被广泛使用的语言。 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(美国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。 目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发:

Linux程序开发三剑客-1-gcc编译

纵饮孤独 提交于 2020-02-06 11:38:28
gcc编译流程 gcc编译选项分析 gcc支持编译的文件后缀及解释 后缀 文件类型 .c C 源程序;预处理,编译,汇编 .C C++源程序;预处理,编译,汇编 .cc C++源程序;预处理,编译,汇编 .cxx C++源程序;预处理,编译,汇编 .m Objective-C 源程序;预处理,编译,汇编 .i 预处理后的 C 文件;编译,汇编 .ii 预处理后的 C++文件;编译,汇编 .s 汇编语言源程序;汇编 .S 汇编语言源程序;预处理,汇编 .h 预处理器文件;通常不出现在命令行上其他后缀名的文件被传递给连接器(linker).通常包括: .o 目标文件(Object file) .a 归档库文件(Archive file) gcc的基本用法 gcc [options] [filenames] gcc编译流程 预处理 Pre-Processing gcc -E hello.c -o hello.i 编译 Compiling gcc -S hello.c -o hello.s 汇编 Assembling gcc -c hello.c -o hello.o 链接 Linking gcc hello.c -o hello.i gcc编译选项分析 总体选项 -I dir 选项 在头文件搜索列表中添加dir目录。 Linux中默认的头文件都放在/usr/include目录下

编译Android 4.4源代码并烧录到Nexus4

时光毁灭记忆、已成空白 提交于 2020-02-06 08:07:14
环境准备: 基本环境:ubuntu-12.04-desktop-64bit(裸机或者Windows下虚拟机安装均可,14.04也可以) 其他要求:空闲磁盘空间100G以上,代码部分接近10G,内存越大越好。 ========================================== 第一部分:环境初始化 ========================================== 1. 安装Oracle JDK 注意:如果编译Android4.4不能用OpenJDK,必须用Oracle JDK1.6,1.7目前是不支持的。 2. 安装必备工具软件 $sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev $ sudo ln -s /usr/lib

Linux下的.NET之旅:第一站,CentOS+Mono+Xsp构建最简单的ASP.NET服务器

点点圈 提交于 2020-02-06 03:58:18
一、Mono产生的背景   由于Linux/Unix等有更强的安全性、运行效率高、拥有大量优秀的开源组件,而.Net则有着其他语言无与伦比的开发效率,因此在非微软平台下运行.Net程序的需求很强烈。Mono 是一个由Novell 公司发起、并且得到微软支持的开源项目。Mono 项目可以在Linux,FreeBSD,Unix,Mac OS X 、Android和苹果系统等非微软操作系统下兼容运行.Net程序。目前占IOS游戏应用市场55%份额的游戏都是使用基于Mono的Unity3d技术开发的。   基于Mono让ASP.Net开发的网站运行在Linux操作系统下也已经有了大量成功的案例,比如世界著名的网站“维基百科WikiPedia ”的搜索部分就是使用Mono支撑运行的、Mozilla开发者社区也是基于Mono运行,可以看 http://www.mono-project.com/Companies_Using_Mono 这一些使用Mono进行开发的公司的列表。让.Net脱离Windows的禁锢,在开源的世界中尽情的徜徉。         下面借鉴 小蝶惊鸿 的博文来介绍下Mono,原文地址请参阅本文底部的参考文献。 二、Mono简介    2.1 什么是mono   关于什么是mono,我想无论我怎么说,应该都不会比官方的解释,或者是 百科 更加详细;我这里就简单说吧

Linux下C++/C 编译生成.a 或者.so 库文件

旧城冷巷雨未停 提交于 2020-02-05 04:26:44
最近因为阅读源码的工作,需要自己编译一些 .so 文件或者 .a 文件,查了一些资料,写了一些示例,记录一下。 静态库和动态库 一般程序编译的过程可以分为 编译 和 链接 两个阶段。链接阶段,需要把所有的obj文件(.o)链接起来,生成可执行程序,这个过程可以链接其他外部的库文件。 有时候也有省略写法。 gcc -c test.c #源文件编译,生成 .o 文件 gcc -o test test.o #将Obj文件链接,可以多个文件 #省略写法 gcc test.c #默认生成 a.out gcc -o test test.c #两个阶段省略成一个 库文件里的具体实现时对用户透明的,只是提供功能函数,而用户不能知道库文件爱你的源码实现。如果你不想开源你的具体实现,你就可以只提供库文件供别人使用。库文件分为静态库和动态库文件: 静态库 :一般情况下也就是 .a 文件。静态库就是指在链接的过程中, 将库文件所有数据都整合到目标代码,这样生成的可执行文件执行时就不再需要外部库支持 ,随便哪里运行。这样就导致了静态库编译生成的可执行库文件较大,而且当库文件需要更新改变时,可执行文件也必须重新编译生成。 动态库 :一般情况下就是 .so 文件。与静态库不同, 动态库文件在链接时不会将所有的代码实现整合到目标代码中,而是在可执行程序执行到相应位置时才会去库文件中搜索相应的方法

Linux下gcc/g++、make和cmake的区别

邮差的信 提交于 2020-02-05 00:36:37
首先介绍一下GCC :GNU Compiler Collection(GNU 编译器集合),在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前 Linux下最常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada等。 gcc与g++区别: gcc 是GCC 中的GUNC Compiler(C 编译器) g++ 是GCC 中的GUN C++ Compiler(C++编译器) 更准确的说法是:gcc 调用了Ccompiler,而g++调用了C++ compiler gcc 和g++ 的主要区别 1. 对于 *.c 和*.cpp文件,gcc分别当做c和cpp文件编译(c和cpp的语法强度是不一样的); g++则统一当做cpp文件编译 2. 使用g++ 编译文件时, g++ 会自动链接标准库STL ,而gcc不会自动链接STL, 在用gcc 编译c++文件时,为了能够使用STL,需要加参数 –lstdc++

语言跨平台的理解

烈酒焚心 提交于 2020-02-03 17:55:44
什么是平台 我们把 CPU处理器与操作系统的整体 叫平台。 CPU大家都知道,8086,Intel与AMD....,每个CPU使用或相同或不同的指令集。指令集就是cpu中用来计算和控制计算机系统的一套指令的集合。指令集又分为精简指令集(RISC)与复杂指令集(CISC), 每种cpu都有其特定的指令集。 操作系统是充当用户和计算机之间交互的界面软件,不同的操作系统支持不同的CPU,严格意义上说是不同的操作系统支持不同CPU的指令集。 语言跨平台 我们说的语言跨平台是编译后的文件跨平台,而不是源程序跨平台,如果是源程序,任何一门语言都是跨平台的语言了。所谓“不跨平台”,只是编译出来的目标代码是机器相关的而已。 C语言为什么不能实现跨平台 我们知道,只要是用标准C开发的程序,使用不同的编译器编译后的可执行文件是可以在对应平台运行的,比如windows可以使用VC编译,那编译后的.exe文件就可以在windows下运行;liunx下可以使用GCC编译,生成的可执行文件就可以在Liunx上运行。 到这里请大家思考一个问题:“VC编译的.exe能在Liunx上运行吗?”,显然是不能的,C语言最后编译出来的二进制文件,不同的CPU识别含义不同, 所以为什么说C语言不能实现跨平台运行,就是因为它编译出来的输出文件的格式,只适用于某种CPU,其他CPU不能识别。 java为什么能实现跨平台

RP-PX30平台uboot编译脚本分析二:prepare 执行的make动作(1)

旧城冷巷雨未停 提交于 2020-02-03 00:42:06
prepare() { local absolute_path cmd dir count # Parse output directory 'O=<dir>' cmd=${OUTDIR%=*} if [ "${cmd}" = 'O' ]; then OUTDIR=${OUTDIR#*=} OUTOPT=O=${OUTDIR} else case $BOARD in #Help --help|-help|help|--h|-h) echo "HELP--" help exit 0 ;; # Parse from exit .config ''|elf*|trust|loader|uboot|map|sym) count=`find -name .config | wc -l` dir=`find -name .config` echo "BOARD = " $BOARD # Good, find only one .config if [ $count -eq 1 ]; then dir=${dir%/*} OUTDIR=${dir#*/} echo "dir = " $dir echo OUTDIR= $OUTDIR # Set OUTOPT if not current directory if [ $OUTDIR != '.' ]; then OUTOPT=O=$

Linux下mysql编译安装

╄→гoц情女王★ 提交于 2020-02-02 12:08:16
一.下载安装包 因为编译安装mysql需要cmake所以先编译安装cmake,这里都一起下载下来 下载cmake,网址 https://cmake.org/download/ 下载mysql,网址 http://dev.mysql.com/downloads/mysql/ 这里要登录一下oracle用户名密码 二.编译安装cmake 解压cmake,比如tar -zxvf cmake-3.5.0.tar.gz ,进入主目录cd cmake-3.5.0 这里可以看到里面一些目录和文件,这里可以用bootstrap来安装也可以用congfigure来安装,这里我们用./bootstrap 来安装,因为./configure是不添加环境变量的 这时候我们发现少了C++的依赖 安装编译所有的依赖 yum -y install gcc gcc-c++ ncurses-devel perl 再执行./bootstrap检测编译环境,没有任何异常以后执行编译gmake && gmake install 三.cmake编译安装mysql 1.编译安装 首先先解压mysql 例如命令tar -zxvf mysql-5.6.29.tar.gz 进入主目录cd mysql-5.6.29/ 执行编译命令 cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \