一、定义及要求
1. 何为跨平台?
一份代码,在Windows上可以编译、运行,在Linux上也可以编译和运行,则称此代码是可以跨平台的。
2. 特点
1)同一份代码,无需改动
2)运行结果相同
3. 跨平台代码的要求
1)尽量使用标准函数/类型/语法
如,ANSI C/STL,是各个平台都支持的函数;
char/short/int/double/float,这些类型各平台都支持。
2)尽量避免平台相关的类型、函数、语法
如,有的编译器认为这样是变量i重复定义
for(int i = 0; i < 2; i++){}
for(int i = 0; i < 10; i++){}
如,用fopen/fclose/fread/fwrite来对文件进行操作,不用open/close/read/write来操作文件。
4. 跨平台的封装
以popen/pclose为例,在Linux下,支持popen/pclose ,在Windows下,支持_popen/_pclose,如何做到代码上的统一?
使用如下条件编译,
ifdef _WIN32
//Windows下的操作
else
//Linux下的操作
endif
二、SAMBA目录共享
SAMBA:是在Linux和UNIX系统上实现SMB协议的一个免费软件。使用它可实现:在Linux服务器上设置一个共享目录,让Windows主机上可以访问(rw)这个目录。
环境:centos6.7
1. 安装samba
yum install samba samba-client samba-swat
备注:这三个都要安装
2. 关闭selinux(一个强化的安全子系统)和firewall(防火墙)
1)关闭selinux
vi /etc/selinux/config
将SELINUX=enforcing
改为
SELINUX=disabled
2)关闭firewall
关闭: systemctl stop firewalld
开机禁用 : systemctl disable firewalld
关闭服务后,重启电脑
备注:也可以不关闭selinux和firewall,而做一些精细的配置。在内网使用,为了方便,可直接关闭selinux,关闭firewall
3. 修改配置文件/etc/samba/smb.conf
vim /etc/samba/smb.conf
进入编辑模式,在最下面添加如下内容
[myshare] #共享名称comment = passwd #提示信息,任意写 path = /home/sharefolder #共享目录public = no #关闭“所有人可见”writable = yes #允许写入操作
4.添加samba用户
pdbedit -a -u root(此处为用户名)
执行过命令后,输入登录密码和再次输入密码确认
备注:samba服务程序的用户账号必须在当前系统中已经存在
5. 创建共享目录
mkdir /home/sharefolder
chown -R root:root /home/sharefolder
备注:该目录在第3步,修改配置文件/etc/samba/smb.conf中配置
6. 启动smb服务
/etc/init.d/smb start
7. 在windows上访问该目录,实现文件共享
windows键+R打开运行窗口,输入Samba服务器的IP地址
image输入第4步创建的samba用户的用户名和密码
image即可完成访问,实现linux和windows对文件夹的共享,且均具有读写权限。
image8. 映射网络驱动器
映射网络驱动器,可快速实现对网络共享文件夹的快速访问。
可右击上面的“myshare”文件夹,点击“映射网络驱动器”
image选择驱动器名称
image即可得到一个快速访问该共享文件夹的盘符。
三、VisualGDB
1. VisualGDB的功能介绍
VisualGDB能够让Linux下的程序在Windows上用Visual Studio中调试起来,利用vs的可视化界面方便的进行linux程序的调试。
VisualGDB通过SSH使得Windows下的VS能够连接到Linux的环境,只要配置好头文件以及库文件等相关目录即可。配置这些属性就和写Makefile类似。下面就来简单介绍一下如何安装和使用VisualGDB,使得在windows的vs中调试linux程序。
下面的测试环境
环境:VS2008 + VisualGDB5.1.6
2. VisualGDB的安装、使用及示例
1)VisualGDB的安装
既下载安装VisualGDB,并激活。
2)创建VisualGDB项目
a.文件->新建->项目,选择VisualGDB->Linux Project Wizard,填写好项目名称、及位置后,点击确定,如图
imageps:第一次创建的时候,有可能会报错,提示“The Visual package not loaded, please run devenv.exe /ResetSkipPkgs”。此时需要用命令行运行 devenv.exe ,并带上参数/ResetSkipPkgs,如图
imageb. 选择Use GNU Make,点击next,如图
imagec. 配置linux环境信息,点击next,如图
imaged. 填写对应的linux目录,点击finish,即完成了工程的创建,如下图。该目录的作用是在windows下的vs中创建的工程文件夹、文件等都会拷贝到该linux远程服务器的该目录
image3)项目属性配置
右击项目->VisualGDB Project Properties
- Project settings->Remote directory(对于建立工程时没有配置的这里依旧可以修改)
- Makefile settings(编译时的配置)
(1) Include directories:头文件目录,主要是第三方头文件目录;
(2) Library directoried:库文件目录;
(3) Library names:链接库名(对应于编译链接时的g++ -L l<链接库名>,如:pthread。
image3、Debug setting(运行时的配置)
此处的Run debugger as root with sudo表示在Linux中以管理员的身份运行程序。
下面的LD_LIBRARY_PATH表示运行时连接的库,即.so动态链接库,对于某些项目,发现自己编译能通过,但是运行时总是报链接错误的就要看看此处的动态库路径是否填写。
image4. 编程示例
LinuxProject1.cpp
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char sz[] = "Hello, World!"; //Hover mouse over "sz" while debugging to see its contents
cout << sz << endl; //<================= Put a breakpoint here
return 0;
}
网友评论