C/C++ Projcet Option

本文深入解析了C/C++项目编译时的配置选项,包括预处理器定义、链接器参数等,详细解释了每个参数的作用及其对驱动程序的影响。同时,介绍了驱动程序链接时所需的关键库文件及配置选项。

C/C++ Projcet Option

 

/nologo /Gz /MLd /W2 /WX /Z7 /Od /DWIN32=100 /D _X86_=1 /D WINVER=0x501 /D DBG=1 /Fo"DriverPath/"/Fd"DriverPath/" /FD /c

 

 

/nologo  :代表不显示编译的版权信息。

/Gz      :采用标准的版权信息。

/W2      :采用二级警告模式 W0至W4 共5级

/WX      :将警告信息视为错误,最大程序的保证了代码的可靠性

/Z7      :用Z7模式产生调试信息。VC默认选项和/driver选项会有冲突

/Od     :关闭调试模式,因为驱动需要内核调试器调试,不需要win32程序那样用VC调试器

/ D WIN32=100 /D _X86_=1 /D WINVER=0x501 /DDBG=1

PreProcessor definitions(预处理器定义):

其中

/D _X86_=1 表示32位系统 

/D WINVER=0x501 表示运行在XP系统 0X500表示2000系统

/D DBG=1         表示Check版本

/Fo"DriverPath/"     这里的DriverPath 表示产生的临时文件存放相对路径

/Fd"DriverPath/"     这里的DriverPath 表示PDB文件存放的路径

                   PDB文件中钫含了大量的符号 是进行源码调试驱动所必需的

/FD               表示生成文件依赖

/c                 只进行编译而不链接

 

Link Project Option

 

ntoskrnl.lib /nologo/base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry"/subsystem:console /incremental:no /pdb:"DriverPath/myddk.pdb" /map:"DriverPath/myddk.map" /debug /machine:I386 /nodefaultlib/out:"DriverPath/myddk.sys"/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078

 

ntoskrnl.lib  NT式驱动链接所必须引用的库文件 WDM式驱动 则需要wdm.lib

/nologo 链接时不显示版权信息

/base:"0x10000" 加载驱动时,设定加载在虚拟内存中的位置

/stack:0x400000,0x1000

/entry:"DriverEntry"

/subsystem:console

/incremental:no

/pdb:"DriverPath/myddk.pdb" 设置PDB文件名

/map:"DriverPath/myddk.map"

/debug /machine:I386

/nodefaultlib   不使用默认库

/out:"DriverPath/myddk.sys" 指定生成驱动的名称

/pdbtype:sept  设置pdb文件类型

/subsystem:native 设置子系统是内核系统

 /driver 编译方式为驱动

/SECTION:INIT,D  将INIT段设置为可抛弃

/IGNORE:4078  忽略4078错误

//4198,4010,4037,4039,4065,4070,4078,4087,4089,4221这些错误都可以忽略

 

 


Starting >>> projcet_node_pkg --- stderr: projcet_node_pkg Error parsing '/home/rk3566/桌面/project/ros_cpp/projcet_node_pkg/package.xml': Traceback (most recent call last): File "/usr/lib/python3/dist-packages/catkin_pkg/package.py", line 610, in parse_package_string root = dom.parseString(data) File "/usr/lib/python3.10/xml/dom/minidom.py", line 2000, in parseString return expatbuilder.parseString(string) File "/usr/lib/python3.10/xml/dom/expatbuilder.py", line 925, in parseString return builder.parseString(string) File "/usr/lib/python3.10/xml/dom/expatbuilder.py", line 223, in parseString parser.Parse(string, True) xml.parsers.expat.ExpatError: mismatched tag: line 9, column 18 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/opt/ros/humble/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py", line 150, in <module> main() File "/opt/ros/humble/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py", line 53, in main raise e File "/opt/ros/humble/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py", line 49, in main package = parse_package_string( File "/usr/lib/python3/dist-packages/catkin_pkg/package.py", line 612, in parse_package_string raise InvalidPackage('The manifest contains invalid XML:\n%s' % ex, filename) catkin_pkg.package.InvalidPackage: Error(s) in package '/home/rk3566/桌面/project/ros_cpp/projcet_node_pkg/package.xml': The manifest contains invalid XML: mismatched tag: line 9, column 18 CMake Error at /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package_xml.cmake:95 (message): execute_process(/usr/bin/python3 /opt/ros/humble/share/ament_cmake_core/cmake/core/package_xml_2_cmake.py /home/rk3566/桌面/project/ros_cpp/projcet_node_pkg/package.xml /home/rk3566/桌面/project/ros_cpp/projcet_node_pkg/build/projcet_node_pkg/ament_cmake_core/package.cmake) returned error code 1 Call Stack (most recent call first): /opt/ros/humble/share/ament_cmake_core/cmake/core/ament_package_xml.cmake:49 (_ament_package_xml) /opt/ros/humble/share/ament_lint_auto/cmake/ament_lint_auto_find_test_dependencies.cmake:31 (ament_package_xml) CMakeLists.txt:34 (ament_lint_auto_find_test_dependencies) --- Failed <<< projcet_node_pkg [0.39s, exited with code 1]
09-12
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值