我正在学习如何在ros中编程。对我来说,第一个困难是头文件。我想阅读原始代码,但问题是它们在哪里?如何找到这些头文件?
我在当前路径中尝试过gcc -H xx.cpp
,但这只是显示了一些无关紧要的答案。例如,我对ros.h而不是字符串感到好奇。对于ros.h,它告诉我
fatal error: ros/ros.h: No such file or directory compilation terminated.
我现在不知道。
dale@dale-Aspire-EC-471G:~/Compile/src/learningros/chapter8_tutorials/src$ gcc -H tf_broadcaster.cpp
tf_broadcaster.cpp:1:21: fatal error: ros/ros.h: No such file or directory
compilation terminated.
dale@dale-Aspire-EC-471G:~/Compile/src/learningros/chapter8_tutorials/src$ gcc -H odometry.cpp
. /usr/include/c++/5/string
.. /usr/include/x86_64-linux-gnu/c++/5/bits/c++config.h
... /usr/include/x86_64-linux-gnu/c++/5/bits/os_defines.h
.... /usr/include/features.h
..... /usr/include/x86_64-linux-gnu/sys/cdefs.h
...... /usr/include/x86_64-linux-gnu/bits/wordsize.h
..... /usr/include/x86_64-linux-gnu/gnu/stubs.h
...... /usr/include/x86_64-linux-gnu/gnu/stubs-64.h
..............
........ /usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h
........ /usr/include/x86_64-linux-gnu/bits/time.h
......... /usr/include/x86_64-linux-gnu/bits/timex.h
....... /usr/include/x86_64-linux-gnu/bits/pthreadtypes.h
........ /usr/include/x86_64-linux-gnu/bits/wordsize.h
....... /usr/include/x86_64-linux-gnu/bits/setjmp.h
........ /usr/include/x86_64-linux-gnu/bits/wordsize.h
....... /usr/include/x86_64-linux-gnu/bits/wordsize.h
.... /usr/include/x86_64-linux-gnu/c++/5/bits/atomic_word.h
... /usr/include/c++/5/ext/alloc_traits.h
.. /usr/include/c++/5/bits/basic_string.tcc
odometry.cpp:2:21: fatal error: ros/ros.h: No such file or directory
compilation terminated.
我希望找到一种有效的方法来查找我想知道的cpp文件中的标头。希望您能提供帮助或给我一些建议。
答案 0 :(得分:1)
命令gcc -H odometry.cpp
将列出gcc正在搜索头文件的所有路径。由于前一条命令给出了一个错误消息,即找不到该标头,因此该列表将不包含该位置,否则,前一条命令将找到ros/ros.h
并且不会产生该错误。
在标准ROS安装中,这些头文件的位置为:
/opt/ros/<distribution_name>/include
如果您已运行安装脚本source /opt/ros/<distribution_name>/setup.bash
或将其包含在.bashrc
脚本中,则会自动为您设置这些头文件的路径。
希望这会有所帮助。