程序移植

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 上众多程序员的共同努力。 如今,在

Beta版本发布

匿名 (未验证) 提交于 2019-12-02 23:43:01
作业链接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/3350 团队名称:仰望星空 团队成员列表: 201731062608 郭昭杰 201731062609 庞斌 201731062610 唐任峻杰 解决Alpha版本的问题: 1.优化了界面 2.实现了新功能单词记忆 下载地址: 因整合成安装包时出现问题,并且移植后不能正常使用,暂不发布 项目预览图: 使用说明: 启动程序并点击“开始”按钮后,可在主菜单选择五个功能,点击后弹出窗口向用户提供相应的功能。 项目总结 1.各成员完成的工作。 郭昭杰:项目后端各功能模块代码的编写 庞斌:项目的测试、BUG修复 唐任峻杰:项目的前端设计与优化 2.在Beta阶段的冲刺中遇到了什么样的问题,怎么解决的。 问题:项目各个窗体之间的跳转和各个控件的隐藏与显示;部分功能具体如何实现;怎样连接数据库;怎样将项目整合成安装包并移植成功。 解决方法:上网查资料、请教同学、自己多思考。

Java技术-0

匿名 (未验证) 提交于 2019-12-02 21:52:03
Java程序语言 简单 面对对象 分布式 多线程 动态 架构中立 可移植 高性能 ǿ׳ 安全 Java应用程序开发的完整过程 源代码都写在后缀名为.java的一个纯文本文件中; 通过启动器从JVM实例中运行称程序; Java可以在不同的操作系统上运行 因为Java虚拟机可以在不同的操作系统,如MIcrosoft Windows,Mac OS,Linux,Solaris,所以.class文件都可以在这些系统上运行。 平台:程序运行的硬件或软件换境; 大多数平台可看做操作系统和底层硬件的组合; Java平台是运行于其他软件平台之上的纯软件平台; 缺陷:因为平台独立,所以Java平台要比本地代码要慢一些;但是不影响移植性的情况下,性能接近本地代码; Java技术的优势 入门快; 代码少; 代码质量高; 开发效率高; 避免平台相关性; 编写一次,到处运行; 发布软件更容易;

C语言是什么

狂风中的少年 提交于 2019-12-01 10:02:10
大家对于 Java 可能并不陌生,那你对 c 语言了解多少呢,今天小编带大家来了解 c 语言是什么。 c 语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。 C 语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。 C 语言特点: 1、 运算符丰富 2、 简洁紧凑、灵活方便 3、C 语法限制不太严格、程序设计自由度大 4、C 语言适用范围大,可移植性好 5、C 语言允许直接访问物理地址,可以直接对硬件进行操作 6、 C 语言程序生成代码质量高,程序执行效率高 以上就是小编给大家带来的 C 语言知识,希望帮到大家 来源: https://www.cnblogs.com/mb66/p/11677867.html

linux下移植wifi之概念介绍(一)

南笙酒味 提交于 2019-11-29 10:14:57
详细介绍linux下移植wifi的步骤.docx Linux系统下移植wifi模块,使其正常工作。包括两部分内容,第一部分是识别无线设备,并且正确安装驱动程序。第二部分是选择管理无线连接的方法。本文将介绍这两部分内容。 一、 背景 配置wifi有三种方式:图形客户端,文本模式接口和命令行界面。最简单的方法是在安装桌面环境后使用图形客户端。它们提供了一个方便的点击式界面,可以在几秒钟内让用户进入网络。也可以通过编辑一些配置文件从命令行配置无线,这需要花费更多的时间来设置。 有三种工具支持命令行驱动的无线配置:net-wireless / iw,net-wireless / wireless-tools和net-wireless /wpa_supplicant。在这三个中,net-wireless / wpa_supplicant是首选的。需要记住的重要一点是,无线网络是在全局基础上配置的,而不是基于接口的。 net-wireless/iw是net-wireless/wireless-tools延伸的产品(继承者),它支持几乎所有卡和驱动,但它不能连接到WPA-only接入点。如果网络只提供WEP加密或完全开放,那么net-wireless/iw轻轻松松胜过其他软件。 市场上现在经常使用 iw 和 wpa_supplicant两种软件。wifi 是 完全开放 或者 WEP 模式的时候

嵌入式--程序的可移植性考虑

北战南征 提交于 2019-11-28 22:22:09
参考:华清远见官网的免费下载资源 程序的可移植性考虑   结合嵌入式Linux 实例来讲解嵌入式开发在可移植性方面需要考虑的问题。 1. 字长和数据类型   能够由机器一次完成处理的数据称为字,不同体系结构的字长通常会有所区别,例如,现在通用的处理器字长为32 位。在嵌入式Linux中,为解决体系结构不同时的字长问题,存在两种数据类型,a)不透明数据类型 b)长度明确的数据类型 程序中用typedef声明的新类型属不透明数据类型,而int属于长度明确的数据类型。 2. 数据对齐    对齐是内存数据与内存中的相对位置相关的话题。如果一个变量的内存地址正好是它长度的整数倍,它就 被称作是自然对齐的。例如,对于一个32 位(4 个字节)类型的数据,如果它在内存中的地址刚好可以被4 整除(最低两位是0),那它就是自然对齐的。数据对齐的内存在访问时效率要高于数据不对齐的内存。目前大多数体系都会采用数据对齐。 编写可移植性高的代码要避免对齐问题,保证所有的类型都能够自然对齐。 3. 字节顺序   字节顺序是指一个字中各个字节的顺序,有大端模式和小端模式。大端模式是指在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端模式是指与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。ARM 体系结构支持大端模式(big