I was trying to get my hands dirty with SLAM and I started with ORB-SLAM2 library.
I have downloaded a TUM sequence and wanted to use ROS for it. So I am following the steps according this page.
In Step 7, part 2, when i run ./build_ros.sh, I get the following error:
In file included from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../Thirdparty/g2o/g2o/types/../core/optimizable_graph.h:41:0,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../Thirdparty/g2o/g2o/types/../core/base_vertex.h:30,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../Thirdparty/g2o/g2o/types/types_seven_dof_expmap.h:34,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../include/LoopClosing.h:34,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../include/LocalMapping.h:26,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../include/Tracking.h:31,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../include/System.h:29,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/AR/ViewerAR.h:29,
from /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/src/AR/ViewerAR.cc:21:
/home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/../../../Thirdparty/g2o/g2o/types/../core/jacobian_workspace.h:36:24: fatal error: g2o/config.h: No such file or directory
compilation terminated.
CMakeFiles/MonoAR.dir/build.make:198: recipe for target 'CMakeFiles/MonoAR.dir/src/AR/ViewerAR.cc.o' failed
make[2]: *** [CMakeFiles/MonoAR.dir/src/AR/ViewerAR.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
I went and checked the g2o folder and there is a file by name config.h.
So why am I still getting the error?
In the CMakeLists.txt in /home/sarvagya/Desktop/Swaayatt/ORB_SLAM2/Examples/ROS/ORB_SLAM2/
Try adding
${PROJECT_SOURCE_DIR}/../../../Thirdparty
to the list of include_directories() at line 44 (it should be at that line if you did not change the file)
Adding this line tells the cmake where to find the g2o/config.h.
From the information, that missing g2o/config.h in jacobian_workspace.h, but when I look into the file, and do not find the include in line 36. Do I miss something, or you change something?
Related
When writing this command line
sudo C_INCLUDE_PATH=/usr/local/opt/openssl/include /Applications/XAMPP/xamppfiles/bin/pecl install mongodb
I get this error.
fatal error: 'unicode/usprep.h' file not found
#include <unicode/usprep.h>
^~~~~~~~~~~~~~~~~~
1 error generated.
make: *** [src/libmongoc/src/libmongoc/src/mongoc/mongoc-scram.lo] Error 1
ERROR: `make' failed
It says something with the usprep.h, it took for me days to figure out in many different ways but unfortunately you guys may support me to solve it.
I have a QEMU VM running an image of the Linux kernel 4.14.78.
On the host machine (a server with 96 cores), I am trying to compile a new update for the kernel with some changes I have made.
To make this process faster, I was using the host machine to compile for the target VM.
To do that I follow these steps:
copy the /boot/config-4.14.78 file from VM to host
put the copied file into the kernel source-code root directory, renaming it to .config in my
run make clean to clean it
run make menuconfig just to update the configs
run make -j$(nproc)
However, I am getting this error:
AS arch/x86/purgatory/setup-x86_64.o
CC arch/x86/purgatory/sha256.o
AS arch/x86/purgatory/entry64.o
CC arch/x86/purgatory/string.o
In file included from scripts/selinux/mdp/mdp.c:49:
./security/selinux/include/classmap.h:245:2: error: #error New address family defined, please update secclass_map.
245 | #error New address family defined, please update secclass_map.
| ^~~~~
make[3]: *** [scripts/Makefile.host:102: scripts/selinux/mdp/mdp] Error 1
make[2]: *** [scripts/Makefile.build:587: scripts/selinux/mdp] Error 2
make[2]: *** Waiting for unfinished jobs....
In file included from scripts/selinux/genheaders/genheaders.c:19:
./security/selinux/include/classmap.h:245:2: error: #error New address family defined, please update secclass_map.
245 | #error New address family defined, please update secclass_map.
| ^~~~~
CHK scripts/mod/devicetable-offsets.h
make[3]: *** [scripts/Makefile.host:102: scripts/selinux/genheaders/genheaders] Error 1
make[2]: *** [scripts/Makefile.build:587: scripts/selinux/genheaders] Error 2
make[1]: *** [scripts/Makefile.build:587: scripts/selinux] Error 2
make[1]: *** Waiting for unfinished jobs....
I have checked what causes this, and turns out that it is because of the:
include/linux/socket.h:211:#define AF_MAX 44 /* For now.. */
include/linux/socket.h:260:#define PF_MAX AF_MAX
Then, I followed this solution to print out the definition of PF_MAX at preprocessing time, and turns out that the PF_MAX is 45:
In file included from scripts/selinux/mdp/mdp.c:49:
./security/selinux/include/classmap.h:247:9: note: #pragma message: 45
247 | #pragma message(STRING(PF_MAX))
| ^~~~~~~
./security/selinux/include/classmap.h:250:2: error: #error New address family defined, please update secclass_map.
250 | #error New address family defined, please update secclass_map.
| ^~~~~
This 45 makes no sense for me, because I just checked that it is supposed to be 44.
I wonder if the build is considering the host machine instead of the target?
P.S.: These steps works fine on my local machine, which is a 8-cores machine, look the kernel version:
uname -a
Linux campes-note 5.4.86 #1 SMP Fri Jan 1 16:26:25 -03 2021 x86_64 x86_64 x86_64 GNU/Linux
UPDATE 1:
I tried to compile the kernel without any of my changes, following th above steps mentioned, and it did not compile as well, I get the same error.
UPDATE 2:
I found out that somehow, the compilation is looking at the host /usr/src/linux-headers-x.x.x files.
Instead, it should point to the same version as the target.
For that, I tried to follow this tutorial but I did not success. I am having a problem in one of the steps stated on this tutorial.
(Gathered from the now removed comments)
I have tried myself to build myself v4.14.78 followed by the latest available v4.14.214. I have found that former fails while the latter builds. So, I have bisected down to v4.14.116 that first builds correctly. Then I simple looked into the changes and found commit 760f8522ce08 ("selinux: use kernel linux/socket.h for genheaders and mdp") in the Linux stable tree which fixes the issue.
You may try to cherry-pick it to your branch and compile again.
I'm just starting out with yocto. Reading Embedded Linux Systems with the Yocto Project. Downloaded latest rocko release with git, created a new environment and ran bitbake core-image-sato. Got the following errors during build
ERROR: binutils-native-2.29-r0 do_install: oe_runmake failed
ERROR: binutils-native-2.29-r0 do_install: Function failed: do_install (log file is located at /home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/temp/log.do_install.73730)
ERROR: Logfile of failure stored in: /home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/temp/log.do_install.73730
...
...
...
ERROR: Task (virtual:native:/home/some-user/projects/poky/meta/recipes-devtools/binutils/binutils_2.29.bb:do_install) failed with exit code '1'
NOTE: Tasks Summary: Attempted 826 tasks of which 431 didn't need to be rerun and 1 failed.
Looked at the home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/temp/log.do_install.73730 log file and found the following in it
/home/some-user/projects/rpi-yocto-build/tmp/hosttools/ld: cannot find ../bfd/.libs/libbfd.a: No such file or directory
collect2: error: ld returned 1 exit status
Makefile:1116: recipe for target 'ld-new' failed
make[4]: *** [ld-new] Error 1
make[4]: Leaving directory '/home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/git/build.x86_64-linux.x86_64-linux/ld'
Makefile:1760: recipe for target 'install-recursive' failed
make[3]: *** [install-recursive] Error 1
make[3]: Leaving directory '/home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/git/build.x86_64-linux.x86_64-linux/ld'
Makefile:1931: recipe for target 'install' failed
make[2]: *** [install] Error 2
make[2]: Leaving directory '/home/some-user/projects/rpi-yocto-build/tmp/work/x86_64-linux/binutils-native/2.29-r0/git/build.x86_64-linux.x86_64-linux/ld'
Makefile:7204: recipe for target 'install-ld' failed
make[1]: *** [install-ld] Error 2
make[1]: *** Waiting for unfinished jobs...
Is ../bfd/.libs/libbfd.a something I should have installed on my machine or it is rocko that is missing it? Is there a fix for this?
I'd suggest that that isn't the actual error, but a subsequent one. Can you do bitbake binutils-native -cclean (to wipe away the partial build) and then bitbake binutils-native, and assuming it breaks again pastebin the entire log.do_install.
Also I've not read that book but it might be worth trying with MACHINE=qemux86 from just a clone of Poky, so we can rule out other layers or configuration.
I am perorming following steps for compiling source code locally. i am using poky version pyro of yocto. but after successfully clean the source code, while compiling source code is remove and error is display.
step 1
bitbake -v -c clean u-boot
step 2
bitbake -v u-boot
------------------------------Eroor-------------------------------
make: *** No rule to make target 'am335x_boneblack_config'. Stop.
make: Leaving directory '/u-boot/u-boot_v2017.01/u-boot_src'
ERROR: u-boot-1_2017.01-r0 do_compile: oe_runmake failed
ERROR: u-boot-1_2017.01-r0 do_compile: Function failed: do_compile (log file is located at /PYRO_BUILD/tmp/work/beaglebone-poky-linux-gnueabi/u-boot/1_2017.01-r0/temp/log.do_compile.10915)
ERROR: Logfile of failure stored in: /PYRO_BUILD/tmp/work/beaglebone-poky-linux-gnueabi/u-boot/1_2017.01-r0/temp/log.do_compile.10915
how should i resolve it?
make: *** No rule to make target 'am335x_boneblack_config'. Stop.
make: Leaving directory
'//src_bsp/u-boot/u-boot_v2017.01/u-boot_src'
From above error, It seems that you have uboot code locally at '//u-boot/u-boot_v2017.01/u-boot_src' which gets deleted on compiling(bitbake -v u-boot).
Try using EXTERNALSRC instead of S to specify path to u-boot source code as follows :
inherit externalsrc
EXTERNALSRC = "/<workspace>/u-boot/u-boot_v2017.01/u-boot_src"
EXTERNALSRC_BUILD = "/<workspace>/u-boot/u-boot_v2017.01/u-boot_src"
After I change the function name from something else to addOptitrans and recompile, I get the following error:
make final_babylon DICTS=.* bash ../bin/babylon_add_optitrans.sh
DICTS=.* /tmp/scalacmd6937716255793087955.scala:1: error: value
addOptitrans is not a member of object
stardict_sanskrit.batchProcessor
stardict_sanskrit.batchProcessor.addOptitrans("DICTS=.*")
^ one error found make: *** [final_babylon] Error 1
I have confirmed that the updated class is produced in the expected place in the classpath. What could be going wrong?
Delete temporary files with rm -r /tmp/scala*. Then rerun the command.