7编译和连接
有多种方法可以回到C/C++视图:在显示的右上角的的下拉菜单中选择“C/C++视图”。或者按下Ctrl键,重复按F8直到弹出菜单“C/C++”变为高亮,然后释放这两个键,又或者选择“Window”->“Navigation”->“Next Perspective”然后从弹出菜单中选择“C/C++”.
在编译之前,你可能需要设置编译是否需要调试信息。通过右击项目名,然后选择“Properties”可以达到z这个目的。点击“QNX C/C++ Projects”,点击“Build Variants”,之后点击“x86”后面的小加号。默认情况下编译会给出调试信息。如果不想这样的化,可以选择不带调试信息的编译。
在QNX C项目创建的过程中,还生成了一个带有“Makefiles”的QNX目录结构。现在生成二进制文件,右击项目名称,选择“Build Project”。编译器和连接器会自动做其工作。 在“Console”视图的“C-Build”输出中,会出现编译器输出,包括出现的错误。
然而,如果在编译过程中出现错误,你会发现错误视图会很有用,因为它会将编译器的输出以集成的以及更易读的形式显示。
如果你将指针放到错误上时,编辑器也会给出错误信息。
在编译完成后,二进制文件被放入“Binaries”文件夹。物理上,它们位于CPU目录中的O和o-g下。IDE自动创建相应的Makefiles。
QNX库“libc.so”在默认情况下,动态连接到你的二进制文件(库中含有很多基础的函数)。如果你想在此后添加其他的库,可以通过“Project”->“Properties”。在此,点击“Linker”然后在“Category”中选择“Extra Libs”。
点击“Add”,然后输入库的名字,不用输入名字的前缀和后缀。例如,如果想要添加数学运算库“libm.so”,你只需要在“Name ”区域输入m..
点击“OK”。连接器将在你编译程序时自动连接到该库。
8 为运行程序作准备
需要首先建立一个运行设置,然后才能在目标机上编译和运行你所创建的程序。包括设置能影响程序启动的各种变量(例如:命令行参数,环境变量等)。这些变量只需设置依次,然后就能反复的使用。
现在设置你自己的运行环境:在“Run”菜单喜爱,选择“Debug??”。然后打开一
个窗口,你可以启动已经存在的设置,或者对应经存在的设置进行更改,甚至新建一个。在窗口的左边,选择设置的类型“C/C++ QNX QCnn (IP)”。这种模式意味这使用基于网络的开发环境,从机上运行QNX Neutrino 系统。点击“New”创建一个新的运行环境。现在你将不得不做出与你即将运行的程序有关的多项配置。默认情况下,只有“Main”项需要你的输入。当然,你也要了解其他的标签提供何种功能。
紧接着“C/C++ Appplication”,点击“Search”按钮然后选择将要运行的二进制文件。如果你在编译的时候选择了编译信息,那它会出现一个“bug”小标记。相反的,如果没有选择编译信息,那么则会出现“running man”标志。因为我们要在接下来的过程中运行调试,,因此,此处选择带有调试信息的二进制文件。在“Target Opition”下,选择你的目标系统,然后点击“Apply”,设置完成。
9 运行及调试
现在,屏幕上可能仍在显示运行设置对话框。之前已经为运行做了设置,此时可以在调试器中运行。点击“Debug”。 IDE转换到“Debug”视图,同时将你的程序从开发机通过网络传到目标的QNX Neutrino系统,然后开始调试。这时,调试器将停滞在程序的第一行。在Debug视图中,你会看到所有进程的概况,包括调用栈。在Debug视图中使用主工具条,可以控制调试。
使用“Step Over”按钮,跳到代码的下一行
在调试的过程中,可以通过右边的“Variables”视图查看程序中变量的变化。使用“Step Into”按钮,让调试跳到函数中的代码(当然,只有在你的源码中含有这个函数的代码才有用)。
将鼠标指针放到源码现实的左边框,点击右键从弹出的快捷菜单中选择“Toggle Breakpoint”,从而设置断点。断点以一个小的指针显示,当然也可以在写代码时添加或移除断点。
当程序运行到断点时,运行停止,这时你可以检查变量。点击“Resume”按钮,程序继续运行,知道遇到下一个断点。
点击“Terminate”按钮,停止程序的运行。