程序移植


嵌入式行业知识结构导航

拈花ヽ惹草 提交于 2019-12-23 09:29:32
第一部分:Linux平台搭建与环境熟悉 了解linux系统;区分各种版本的Linux系统,以便于拓展 Linux视野。 1、Linux 简介; 2、Linux 系统的主要特点; 3、Linux 的组成; 4、主要的 Linux 版本; 5、嵌入式 Linux简介与发展 第二部分:虚拟机安装和LINUX系统安装 1、虚拟机安装; 2、Linux系统的安装; 3、Linux系统的常用软件的安装; 4、Linux快速入门 5、 熟悉运用 Linux环境下,常用命令的操作与系统设置,如常用的 Shell;掌握基本的Shell 应用 第三部分:嵌入式LINUX环境搭建 1、 建立嵌入式 Linux开发环境 2、 熟悉嵌入式开发平台 3、 嵌入式 Linux开发工具 4、 Linux下的调试技巧 5、 MAKE工程管理器 6、 硬件环境的搭建;arm-linux-gcc与 gcc安装配置 第四部分:U-Boot 了解 U-Boot 的作用及工作流程;了解Bootloader 的代码结构、编译过程;移植U-Boot;掌握常用的U-Boot命令。 1、 Bootloader介绍 2、 u-boot工程介绍 3、 u-boot的编译使用 4、 u-boot源码分析 5、 u-boot资源分配 6、 配置编译u-boot 7、 u-boot移植过程 8、 u-boot常用命令操作 9、 添加u

让人蛋疼的Objective-C语法

这一生的挚爱 提交于 2019-12-10 03:41:26
真的很蛋疼,发明这个语言的家伙肯定是因为自己的蛋疼了才发明了这个语言,然后推广这个语言的人因为蛋疼也就推了这个语言,最后蛋疼的受害者就是开发者,包括我这样的爱好者。 最蛋疼的语法肯定就是方法调用,java一个点就搞搞定的事情,它非得用中括号,然后就是参数,申明的格式和调用的方式让人无法接受,如果说这是编程语言的优雅,那么就蛋疼得优雅吧。 没有命名空间机制,也就是跟你说,你就不要想着把程序写大了,你不要想着重用你的代码了…………-_-||| 其实学习Objective-C并不困难,有C基础就行,然后接受蛋疼的部份,把蛋疼移植到你的蛋上,继续疼就行了。 不过Objective-C也有很让人称道的地方,就是速度快,还有什么可说的,本就是C程序,只是稍蛋疼地包装一下,速度不快不行,也能怪iPhone远比Android程序反应快主因了。 我现在要做的是,蛋疼移植,要疼得习惯。 来源: oschina 链接: https://my.oschina.net/u/89828/blog/39181

将 C++ Qt 程序移植至 Linux 系统

不问归期 提交于 2019-12-05 16:56:12
前言 Qt 的安装 选择对应版本 更改文件的属性使得其具有可执行性 执行程序 检查 Qt Creator 是否勾选 进入 Qt Creator Qt 环境的配置 安装 gcc 或 g 编译器 编译器错误 ICE in gen_type_die_with_usage 更新 g C 在 MSVC 与 GNU G上的不同之处 enum 的前置声明 size_t 与 stdsize_t auto 推断函数返回值 函数返回数组问题 其他问题 初始化顺序 warning will be initialized after -Wreorder 替换 INT_MAX 和 INT_MIN 感想 前言 前段时间,我一直在使用 Visual Studio 编写一个 C++ Qt 游戏小程序: https://github.com/lgasyou/SimpleSimulator 。突然有一天,我想看看它的可移植性到底如何,于是我把它转化成 .pro 并移至了 Ubuntu 14.04 系统中,之后就开始了漫长的配置之旅。 Qt 的安装 1. 选择对应版本 可以前往 Qt 的官方网站根据CPU架构类型和版本号的不同选择 qt-opensource-linux-CPU架构类型-任意版本号.run 下载,例如需在 32 位系统下下载版本号为 5.8.0 时的 Qt 则选择 qt-opensource-linux

Windows下C++程序移植到Linux上的几个问题及解决方法

独自空忆成欢 提交于 2019-12-05 16:54:01
今天帮朋友从Windows下移植一个小程序到Linux下,遇到了两个问题,在这里分享一下解决方法。 刚开始觉得,移植应该很简单,就是重新再Linux下编译一次就可以了。但是遇到了,不少问题。下面一一说明。 1、fopen_s()函数报错。 原因是,fopen_s()这个函数并不是标准的C++库中的函数,是微软特有的,也就是说如果你用VS编译不会有问题,但是如果你用Linux的g++或gcc就会报错。 解决办法,用fopen()代替。具体可参考: http://zhidao.baidu.com/link?url=8HhseVoTmwWpgmv-dsJyRjxt8sd1oJaqzZkJGzuJ_TKyNXbiEgs-EtPxie_xhfiwOY4uqojpKETCOugGZhrmCgt2pzLow2wq1urrVUCj0KS FILE *fp; fopen_s(&fp,BBC,"rb"); //改成如下 fp = fopen(BBC,"rb"); 2、第二个问题是怎么样使用C++11的库。 我们知道,现在C++11标准已经使用很多了。那我们怎样在编译的时候指定使用C++11标准呢? 这里说两种情况: 1、g++,使用-std=c++11 g++ -std=c++11 test_slic.cpp slic.cpp -o test_slic.exe -L/home/sun/cmake

windows程序移植到linux总结

◇◆丶佛笑我妖孽 提交于 2019-12-05 16:53:32
首先要写makefile,很简单,有专门博客,大家去搜一下..下面把编译时遇到的问题总结下.大部分解决方法是从网上找的,这里对看过文章的作者表示感谢. 1, max,min函数,自己代码实现了这两个函数,会和linux自带的有冲突. 解决方法: 删除自己的函数 2, error: ‘STATUS’ is not a class or namespace 解决方法:类内部枚举不要加namespace符号,直接写枚举变量 3, ‘>>’ should be ‘> >’ within a nested template argument list 解决方法:>>之间加空格.linux防止歧义. 4, ‘std::shared_ptr’ has not been declared 解决方法:std::tr1::shared_ptr,添加头文件#include<tr1/memory> 5, ‘atoi’ is not a member of ‘std’ 解决方法:#include <cstdlib> 6, ‘sprintf_s’ was not declared in this scope 解决方法:换为snprintf 7, there are no arguments to memcpy that depend on a template parameter, so a

VC程序移植到Linux

前提是你 提交于 2019-12-05 16:51:37
前进中…… 今天把在VC下写的jpeg文件发送程序移植到Linux下面,碰到了一个问题,找了n久原因,才发现原来是定义的一个结构体中的数据类型在VC和Linux中不匹配所致(具体说来是BOOL 和 bool),后来把他们都改成与街哦股无关的uint8_t才成功。 下面引用一篇文章,讲了VC程序移植到Linux下要注意的一些问题。 zz:http://www.xxlinux.com/linux/article/development/soft/20080528/14472.html 将VC程序移植到Linux系统的几点经验心得 有时我需要制作LINUX与WINDOWS下都可以运行的程序。在一般情况下,我会选择在WINDOWS平台下完成初始的开发。因为VC提供的图形化的编辑与调试界面的确较GCC要高产得多。在完成了测试之后,就开始把它向LINUX移植,移植的过程会有一些需要注意的地方。下面就是我的一些心得。 文件名 由于ext2文件系统对文件名是大小写敏感的,当你在这种文件系统上进行编译的时候,源文件中出现的#include 语句必须小心了。因为在VC环境下,由IDE自动生成的#include 语句,其中的文件名全部是小写的。所以,你需要在一开始就注意这个问题,严格的使用大小写敏感的文件名格式,避免在LINUX下编译时出现找不到头文件的错误。 数据类型 千万不要使用VC独有的数据类型

记一次把Windows程序移植到Linux的过程

谁说胖子不能爱 提交于 2019-12-05 16:51:21
场景复现 今天下午,客户反映我们系统的API在Linux下使用时有点问题。发布主管,想在本地做个测试,但是目前现有的Demo程序只有windows版本的,所以找到负责API的我,把该Demo程序从Windows移植到Linux。 问题及解决方案 问题1: windows下的vsnprintf_s在Linux下该替换为什么呢? 解决方法: Linux下可以采用vsnprintf函数来对vsnprintf_s进行替换。 注意点: vsnprintf与vsnprintf_s的参数对应基本相同,只不过需要给出所要写入的buffer的大小。具体请参见 vsnprintf和 vsnprintf_s的函数定义。 问题2: windows下的Sleep函数在Linux下替换为什么? 解决方法: Linux下对应的睡眠函数为sleep和usleep,不同点在于,sleep函数对应的睡眠时间参数是以秒为单位的,usleep函数对应的睡眠时间参数是以微秒为单位的。而windows下的Sleep函数的参数是以毫秒为单位的。 问题3: 编译时遇到如图所示问题: 解决方案: 本次编译出现上面问题的原因是所用的Linux操作系统是64位的,而所链接的动态库所支持的是32位操作系统,进而把动态库替换为64位的即可解决问题。 问题4: 编译链接得到可执行文件之后,执行可执行文件出现如图所示错误提示: 解决方法:

C++程序的耦合性设计

大憨熊 提交于 2019-12-05 16:28:01
声明:本文部分采用和参考《代码里的世界观-通往架构师之路》中内容,可以说是该书中耦合性一章的读后感,感谢该书的作者余叶老师的无私分享。 1.什么是耦合? 耦合其实就是程序之间的相关性。 程序之间绝对没有相关性是不可能的,否则也不可能在一个程序中启动,如下图: 这是一个Linux中socket TCP编程的程序流程图,在图中的TCP服务器端,socket()、bind()接口、listen()接口、accept()接口之间肯定存在着相关(就是要调用下一个接口程序必需先调用前一个接口),也就是耦合,否则整个TCP服务器端就建立不起来,以及改变了bind()中的传入的数据,比如端口号,那么接下来的listen()监听的端口,accept()接收连接的端口也会改变,所以它们之间有很强的相关性,属于紧耦合。所以耦合就是代码的相关性,如果还不明白,也没关系,继续看下去,相信你会懂的,哈哈。 2.耦合的形式 (1)数据之间耦合 在同一个结构体或者类中,如: typedef struct Person { int age; char* name; }Person; class Person { private: int age_m; bool namePresent_m; std::string name_m; }; 在上面的结构体和类中,年龄和名字两个基本数据单元组合成了一个人数据单元

嵌入式Linux全攻略 ACE程序移植过程详细讲解

徘徊边缘 提交于 2019-12-05 00:17:11
1、在安装有Linux操作系统的PC上安装交叉编译器,笔者使用的是Moxa tool chain for DA66x,(其它的嵌入式Linux系统都是一样的做法),可以从 Moxa网站上下载 :   2、将ACE程序包下载到Linux PC上,并解压   3、设置环境变量:   A、交叉编译工具的路径:export PATH=“/usr/local/xscale_be/bin:$PATH”   B、ACE_ROOT:export ACE_ROOT=“/home/jun/ACE_wrappers”(根据实际路径设置)   4、将$ACE_ROOT/ace/config-linux.h复制成$ACE_ROOT/ace/config.h   cp $ACE_ROOT/ace/config-linux.h $ACE_ROOT/ace/config.h   5、将$ACE_ROOT/include/makeinclude/platform_linux.GNU复制成   $ACE_ROOT/include/makeinclude/platform_macros.GNU并修改   $ACE_ROOT/include/makeinclude/platform_macros.GNU文件:   添加:   CC = xscale_be-gcc   CXX = xscale_be-g++   删除:  

cygwin,gcc,MinGW

大憨熊 提交于 2019-12-03 22:26:28
GCC 是一个原本用于 Unix-like 系统下编程的编译器。不过,现在 GCC 也有了许多 Win32 下的移植版本。所以,也许对于许多 Windows 开发者来说, GCC 还是一个比较陌生的东西。所以,我希望通过这章的叙述,让你——一个 Windows 开发者对 GCC 这一个优秀的编译器有一个大概的了解。 历史 GCC 是 GNU 公社的一个项目。是一个用于编程开发的自由编译器。最初, GCC 只是一个 C 语言编译器,他是 GNU C Compiler 的英文缩写。随着众多自由开发者的加入和 GCC 自身的发展,如今的 GCC 以经是一个包含众多语言的编译器了。其中包括 C,C++,Ada,Object C 和 Java 等。所以, GCC 也由原来的 GNU C Compiler 变为 GNU Compiler Collection 。也就是 GNU 编译器家族 的意思。当然,如今的 GCC 借助于他的特性,具有了交叉编译器的功能,即在一个平台下编译另一个平台的代码。直到现在, GCC 的历史仍然在继续,他的传奇仍然被人所传颂。 Windows 下的 GCC 家族 起初, GCC 是用于 Unix,Unix-like 系统的编译器。不过,现在 Windows 下也出现了 GCC 的稳定移植版。这要感谢 Internet 上众多程序员的共同努力。 如今,在

工具导航Map