PPC的C/C++和人工智能学习笔记
每一篇学习笔记,都只是为了更好地掌握和理解

linux开发(5)_SourceInsight中include的处理

在使用SourceInsight编写代码的过程中,发现很多函数和结构体没有提示,主要是因为相关的include文件没有在工程内。

 

要解决这个问题,第一是要能让source insight能访问到这些include文件,第二是要通过一个通用的方法将这些include文件引入到工程文件中。

 

要让source insight能访问到这些include文件,有两个办法,一个是将Linux中的文件夹通过共享的方式映射到windows中(映射网络驱动器),另外一个就是将这些include文件夹复制下来,放在windows的文件夹中。

 

一、通过在Linux下安装Samba,然后在Windows下将Linux共享目录映射为网络驱动器。

在Ubuntu14.04中,通过下列指令安装Samba:

# apt-get install samba

# apt-get install smbclient

 

将Linux下include文件所在的目录设置为共享目录:

一般来说,include文件都是在/usr/目录下。

注:要知道Linux下gcc的include文件夹位置,可以自己写一个包含所需头文件的.c文件,然后通过gcc -M xxx.c来查看头文件在哪些目录下。

注:假如要写入文件,那么需要查看目录的权限,可以通过 chmod -R 777 /work这样的方式,来打开所有的权限。假如用户组和用户不对,可以通过 chown -R xxx:xxx /work这样的方式来改变目录的属组和属主。

 

修改Samba的配置文件:

# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak   # 备份samba的配置文件

# vim /etc/samba/smb.conf

1. 找到”# security = user”将它改成”security = share”   # 注:去掉行首的注释符号

说明:security = share表示任何人都可以不需要输入密码登录;默认的security = user表示每个用户必须输入密码才能登录。(注:该步骤没有用到。)

2. 在配置文件的最后加入以下内容(不包含行末注释说明部份)

[usr]                   # 共享文件名,可自定义,与共享目录名可不一致

comment=LINUX USR SHARE    # 共享说明,随便写

path=/usr              # 共享目录,绝对路径

public=yes                     # 允许所有人都能够看到此目录

writeable=no                   # 不允许用户在此目录下可写,不需要

 

# sudo /etc/init.d/smbd restart 配置完成后,重启Samba。

 

在windows的“我的电脑”中输入 //192.168.31.233 (根据自己的IP地址来确定),找到下面的目录 usr,右键映射网络驱动器到U:(自己选即可)。

 

由于/usr/目录中文件很多,所以还是要能较精确地定位include文件所在地,通过前面的gcc -M xx.c的方式,大概可以判断出include文件夹在:(可以根据自己的程序来判断)

U:\include

U:\lib\gcc\x86_64-linux-gnu\4.8\include

U:\lib\gcc\x86_64-linux-gnu\4.8\include-fixed

 

二、假如不想通过Samba将Linux文件夹共享出来,那么就直接暴力地将include文件夹复制到windows本地。

这个是最简单的,同样地,因为/usr/目录比较大,全部复制很麻烦,所以,一般都通过gcc -M xxx.c的方式来获取你项目所需要的头文件在哪些目录下,比如我上面列出的三个目录,直接ftp下来(注意,/usr/目录的属组是root,可以打开root用户[#passwd root开启root帐号],或者chown修改属组)。

 

关联到你的工程:

上面,我们通过2种方法,都可以获取到Linux下include文件夹的位置和内容了,那么要想在source insight中方便地使用函数、结构体等的提示和查阅,还需要将它们关联到你的工程中才行。

一:加入base工程。

打开base工程,将上面那3个文件夹下的所有文件都加入到base工程中(可以使用add tree的方法)。然后同步base工程文件。关闭base工程,再打开你自己的工程,你会惊喜地发现,所有的提示都回来了。(实际上,在source insight中进行windows编程,方法也是相同的)。

 

二:建立一个前导工程(类似替代base工程的意思)

1、新建一个工程(linux_base1):

注:source insight建立新工程的简易方法,首先新一个目录如d:/linux_base1,然后在该目录下再建一个目录si,以路径“d:/linux_base1/si”作为新建项目的路径,自己要写的文件就放在d:/linux_base1目录下即可。具体的文件,就通过添加进项目的菜单项来进行。

2、将上面本来要加入base工程的那些个头文件,统统加到linux_base1项目中。

3、菜单option(选项)–>preferences(参数)–>Symbol Lookups(符号查找)–>Add Project to Path,将刚才创建的那个项目加进来。

4、如此,同样可以实现。而且,针对不同的开发环境,我们可以做不同的前导工程,在需要的时候选择合适的前导项目加进去就可以了。而不再需要在base工程中来回地删除和添加。所以,建议使用该方法。

另外:我们一般情况下,在windows编辑代码,ftp上传代码,在SecureCTR中编译代码,每次修改感觉挺麻烦的,所以,在Samba共享中,加了一个:

[work]

comment=LINUX WORK

path=/work

public=yes

writeable=yes

当然,/work目录,使用chmod -R 777 /work 来修改了权限。同样地,完成网络驱动器映射。

这样,我们可以把Linux主机上的项目直接在source insight中打开了,可以省下个ftp的步骤,省事。

 

 

 

 

(2017-11-03 www.vsppc.com)

学习笔记未经允许不得转载:PPC的C/C++和人工智能学习笔记 » linux开发(5)_SourceInsight中include的处理

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址