As title says, I can’t perform the initial build.sh of the FS_autonomous package. I have attached below an output of the build. There seems to be an issue finding several of the core library packages, however I don’t know what would be a fix for this.
uweai@uweai-ssd:~/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous$ ./build.sh
Executing: 'make -C src clean --no-print-directory'
rm -rf ./../ros/ros1_ws/build
rm -rf ./../ros/ros1_ws/devel
rm -rf ./../ros/ros1_ws/install
rm -rf ./../ros/ros2_ws/build ./../ros/ros2_ws/install
rm -f *~ *% *.o core app_tmp.c .depend
Executing: 'make -C src cm-ros2 --no-print-directory'
MK .depend
CC CM_Main.o
CC CM_Vehicle.o
CC User.o
CC IO.o
MK app_tmp.c
CC app_tmp.o
LD CarMaker.linux64
/opt/ipg/carmaker/linux64-14.1.1/bin/transferapp CarMaker.linux64 linux64
MK ros2_ws
-> run 'source "/opt/ros/humble/setup.bash"'
-> run 'colcon build --cmake-args -DCARMAKER_VER:STRING=14.1.1 -DCARMAKER_DIR:PATH=/opt/ipg/carmaker/linux64-14.1.1 --no-warn-unused-cli'
Starting >>> camera_msgs
Starting >>> cmrosutils
Starting >>> hellocm_msgs
Starting >>> vehiclecontrol_msgs
Finished <<< vehiclecontrol_msgs [3.59s]
Finished <<< hellocm_msgs [3.84s]
Starting >>> hellocm
Finished <<< camera_msgs [3.94s]
--- stderr: cmrosutils
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::init(tInfos*)::{lambda(rosgraph_msgs::msg::Clock_<std::allocator<void> >&)#1}::operator()(rosgraph_msgs::msg::Clock_<std::allocator<void> >&) const':
cmrosif.cpp:(.text+0xb9): undefined reference to `SimCore'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::init(tInfos*)':
cmrosif.cpp:(.text+0x19c): undefined reference to `Log'
/usr/bin/ld: cmrosif.cpp:(.text+0x1ab): undefined reference to `LogWarnF'
/usr/bin/ld: cmrosif.cpp:(.text+0x1ba): undefined reference to `LogErrF'
/usr/bin/ld: cmrosif.cpp:(.text+0x3fa): undefined reference to `iGetStr'
/usr/bin/ld: cmrosif.cpp:(.text+0x7eb): undefined reference to `iGetIntOpt'
/usr/bin/ld: cmrosif.cpp:(.text+0x93f): undefined reference to `iGetIntOpt'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::srvCMRemoteControl(std::shared_ptr<rmw_request_id_s>, std::shared_ptr<cmrosutils::srv::CMRemoteControl_Request_<std::allocator<void> > >, std::shared_ptr<cmrosutils::srv::CMRemoteControl_Response_<std::allocator<void> > >)':
cmrosif.cpp:(.text+0x15e5): undefined reference to `GuiCmd_Eval'
/usr/bin/ld: cmrosif.cpp:(.text+0x16e8): undefined reference to `GuiCmd_Eval'
/usr/bin/ld: cmrosif.cpp:(.text+0x1748): undefined reference to `GuiCmd_Eval'
/usr/bin/ld: cmrosif.cpp:(.text+0x1845): undefined reference to `SimStart'
/usr/bin/ld: cmrosif.cpp:(.text+0x1886): undefined reference to `SimStop2'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::testrunStartAtBegin(tInfos*)':
cmrosif.cpp:(.text+0x1ae1): undefined reference to `iGetIntOpt'
/usr/bin/ld: cmrosif.cpp:(.text+0x1b05): undefined reference to `iGetIntOpt'
/usr/bin/ld: cmrosif.cpp:(.text+0x1b32): undefined reference to `SimCore'
/usr/bin/ld: cmrosif.cpp:(.text+0x1f0f): undefined reference to `iGetDblOpt'
/usr/bin/ld: cmrosif.cpp:(.text+0x1f5f): undefined reference to `iGetIntOpt'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::drivmanCalc(double const&)':
cmrosif.cpp:(.text+0x27c8): undefined reference to `SimCore'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::vehicleControlCalc(double const&)':
cmrosif.cpp:(.text+0x284c): undefined reference to `SimCore'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::calc(double const&)':
cmrosif.cpp:(.text+0x28d0): undefined reference to `SimCore'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::out()':
cmrosif.cpp:(.text+0x2950): undefined reference to `SimCore'
collect2: error: ld returned 1 exit status
gmake[3]: *** [CMakeFiles/cmrosif.dir/build.make:153: libcmrosif.so] Error 1
gmake[2]: *** [CMakeFiles/Makefile2:612: CMakeFiles/cmrosif.dir/all] Error 2
gmake[1]: *** [Makefile:146: all] Error 2
---
Failed <<< cmrosutils [6.18s, exited with code 2]
Aborted <<< hellocm [7.01s]
Summary: 3 packages finished [11.0s]
1 package failed: cmrosutils
1 package aborted: hellocm
1 package had stderr output: cmrosutils
2 packages not processed
make: *** [Makefile:124: ros2_ws] Error 2
System specs are:
- Ubuntu 22.04.5 LTS
- ROS2 humble
- Formula CarMaker 14.1.1 (unmodified download)
Any help would be appreciated.
Hello!
From the error, ROS 2 itself seems to be building correctly. The failure happens when cmrosutils is linking, and the missing references such as SimCore, Log, GuiCmd_Eval, SimStart, and SimStop2 point to the CarMaker core libraries not being linked correctly.
Could you please check the lib folder inside your FS_autonomous project with the following commands?
cd ~/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous/lib
ls -l libcmcppifloader-linux64.so*
file libcmcppifloader-linux64.so libcmcppifloader-linux64.so.1.0.0
The expected output would be something like:
libcmcppifloader-linux64.so: symbolic link to libcmcppifloader-linux64.so.1.0.0
libcmcppifloader-linux64.so.1.0.0: ELF 64-bit LSB shared object, x86-64,...
If it’s broken you’ll see something like:
libcmcppifloader-linux64.so: empty or libcmcppifloader-linux64.so: data (or similar)
If libcmcppifloader-linux64.so is not shown as a symbolic link to libcmcppifloader-linux64.so.1.0.0, please recreate it using:
rm -f libcmcppifloader-linux64.so
ln -s libcmcppifloader-linux64.so.1.0.0 libcmcppifloader-linux64.so
Then go back to the project root and run the build again:
cd ~/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous
./build.sh
This issue can happen if the package was copied or extracted in a way that breaks the symbolic link in the lib folder.
Hope that helps 
Hi Marcela,
So I extracted a clean workspace and applied the fix as you described. The result is:
uweai@uweai-ssd:~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous/lib$ ls -l libcmcppifloader-linux64.so*
-rw-rw-r-- 1 uweai uweai 0 Oct 28 12:21 libcmcppifloader-linux64.so
-rw-rw-r-- 1 uweai uweai 29000 Oct 27 2025 libcmcppifloader-linux64.so.1.0.0
uweai@uweai-ssd:~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous/lib$ file libcmcppifloader-linux64.so libcmcppifloader-linux64.so.1.0.0
libcmcppifloader-linux64.so: empty
libcmcppifloader-linux64.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=4396d6501a577ddf9c5dec68fa755c186053a75b, not stripped
uweai@uweai-ssd:~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous/lib$ rm -f libcmcppifloader-linux64.so
uweai@uweai-ssd:~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous/lib$ ln -s libcmcppifloader-linux64.so.1.0.0 libcmcppifloader-linux64.so
uweai@uweai-ssd:~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous/lib$ ls -l libcmcppifloader-linux64.so*
lrwxrwxrwx 1 uweai uweai 33 Apr 28 20:25 libcmcppifloader-linux64.so -> libcmcppifloader-linux64.so.1.0.0
-rw-rw-r-- 1 uweai uweai 29000 Oct 27 2025 libcmcppifloader-linux64.so.1.0.0uweai@uweai-ssd:~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous/lib$ file libcmcppifloader-linux64.so libcmcppifloader-linux64.so.1.0.0
libcmcppifloader-linux64.so: symbolic link to libcmcppifloader-linux64.so.1.0.0
libcmcppifloader-linux64.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (GNU/Linux), dynamically linked, BuildID[sha1]=4396d6501a577ddf9c5dec68fa755c186053a75b, not stripped
After allowing executable permissions to the build scripts, I then get the same error when running the top level build.sh:
uweai@uweai-ssd:~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous$ ./build.sh
Executing: 'make -C src clean --no-print-directory'
rm -rf ./../ros/ros1_ws/build
rm -rf ./../ros/ros1_ws/devel
rm -rf ./../ros/ros1_ws/install
rm -rf ./../ros/ros2_ws/build ./../ros/ros2_ws/install
rm -f *~ *% *.o core app_tmp.c .depend
Executing: 'make -C src cm-ros2 --no-print-directory'
MK .depend
CC CM_Main.o
CC CM_Vehicle.o
CC User.o
CC IO.o
MK app_tmp.c
CC app_tmp.o
LD CarMaker.linux64
/opt/ipg/carmaker/linux64-14.1.1/bin/transferapp CarMaker.linux64 linux64
MK ros2_ws
-> run 'source "/opt/ros/humble/setup.bash"'
-> run 'colcon build --cmake-args -DCARMAKER_VER:STRING=14.1.1 -DCARMAKER_DIR:PATH=/opt/ipg/carmaker/linux64-14.1.1 --no-warn-unused-cli'
Starting >>> camera_msgs
Starting >>> cmrosutils
Starting >>> hellocm_msgs
Starting >>> vehiclecontrol_msgs
Finished <<< vehiclecontrol_msgs [4.07s]
Finished <<< camera_msgs [4.32s]
Finished <<< hellocm_msgs [4.37s]
Starting >>> hellocm
--- stderr: cmrosutils
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::init(tInfos*)::{lambda(rosgraph_msgs::msg::Clock_<std::allocator<void> >&)#1}::operator()(rosgraph_msgs::msg::Clock_<std::allocator<void> >&) const':
cmrosif.cpp:(.text+0xb9): undefined reference to `SimCore'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::init(tInfos*)':
cmrosif.cpp:(.text+0x19c): undefined reference to `Log'
/usr/bin/ld: cmrosif.cpp:(.text+0x1ab): undefined reference to `LogWarnF'
/usr/bin/ld: cmrosif.cpp:(.text+0x1ba): undefined reference to `LogErrF'
/usr/bin/ld: cmrosif.cpp:(.text+0x3fa): undefined reference to `iGetStr'
/usr/bin/ld: cmrosif.cpp:(.text+0x7eb): undefined reference to `iGetIntOpt'
/usr/bin/ld: cmrosif.cpp:(.text+0x93f): undefined reference to `iGetIntOpt'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::srvCMRemoteControl(std::shared_ptr<rmw_request_id_s>, std::shared_ptr<cmrosutils::srv::CMRemoteControl_Request_<std::allocator<void> > >, std::shared_ptr<cmrosutils::srv::CMRemoteControl_Response_<std::allocator<void> > >)':
cmrosif.cpp:(.text+0x15e5): undefined reference to `GuiCmd_Eval'
/usr/bin/ld: cmrosif.cpp:(.text+0x16e8): undefined reference to `GuiCmd_Eval'
/usr/bin/ld: cmrosif.cpp:(.text+0x1748): undefined reference to `GuiCmd_Eval'
/usr/bin/ld: cmrosif.cpp:(.text+0x1845): undefined reference to `SimStart'
/usr/bin/ld: cmrosif.cpp:(.text+0x1886): undefined reference to `SimStop2'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::testrunStartAtBegin(tInfos*)':
cmrosif.cpp:(.text+0x1ae1): undefined reference to `iGetIntOpt'
/usr/bin/ld: cmrosif.cpp:(.text+0x1b05): undefined reference to `iGetIntOpt'
/usr/bin/ld: cmrosif.cpp:(.text+0x1b32): undefined reference to `SimCore'
/usr/bin/ld: cmrosif.cpp:(.text+0x1f0f): undefined reference to `iGetDblOpt'
/usr/bin/ld: cmrosif.cpp:(.text+0x1f5f): undefined reference to `iGetIntOpt'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::drivmanCalc(double const&)':
cmrosif.cpp:(.text+0x27c8): undefined reference to `SimCore'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::vehicleControlCalc(double const&)':
cmrosif.cpp:(.text+0x284c): undefined reference to `SimCore'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::calc(double const&)':
cmrosif.cpp:(.text+0x28d0): undefined reference to `SimCore'
/usr/bin/ld: CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o: in function `cm_ros::CarMakerROSInterface::out()':
cmrosif.cpp:(.text+0x2950): undefined reference to `SimCore'
collect2: error: ld returned 1 exit status
gmake[3]: *** [CMakeFiles/cmrosif.dir/build.make:153: libcmrosif.so] Error 1
gmake[2]: *** [CMakeFiles/Makefile2:612: CMakeFiles/cmrosif.dir/all] Error 2
gmake[1]: *** [Makefile:146: all] Error 2
---
Failed <<< cmrosutils [6.91s, exited with code 2]
Aborted <<< hellocm [7.10s]
Summary: 3 packages finished [11.7s]
1 package failed: cmrosutils
1 package aborted: hellocm
1 package had stderr output: cmrosutils
2 packages not processed
make: *** [Makefile:124: ros2_ws] Error 2
Thanks for checking. The symlink now looks correct, so the original libcmcppifloader-linux64.so issue has been fixed.
The build is now getting past the top-level CarMaker application link step:
LD CarMaker.linux64
/opt/ipg/carmaker/linux64-14.1.1/bin/transferapp CarMaker.linux64 linux64
The remaining error is happening later, during the ROS 2 cmrosutils build, where it cannot resolve CarMaker symbols such as SimCore, Log, GuiCmd_Eval, SimStart, and SimStop2.
Could you please send the output of the following commands?
cd ~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous
find . -type f -empty
cat ros/ros2_ws/build/cmrosutils/CMakeFiles/cmrosif.dir/link.txt
The first command checks whether any other files were extracted as empty files.
The second command shows the exact linker command used for cmrosutils, which should help confirm whether the CarMaker libraries/application are being linked correctly during the ROS 2 build step.
Also, could you confirm how the project was extracted, for example from a .zip, .tar.gz, or another archive format?
Hi Marcela, here are the requested logs:
uweai@uweai-ssd:~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous$ find . -type f -empty
./build/cmrosutils/.cmake/api/v1/query/client-colcon-cmake/codemodel-v2
./build/COLCON_IGNORE
./build/camera_msgs/.cmake/api/v1/query/client-colcon-cmake/codemodel-v2
./build/hellocm_msgs/.cmake/api/v1/query/client-colcon-cmake/codemodel-v2
./build/vehiclecontrol_msgs/.cmake/api/v1/query/client-colcon-cmake/codemodel-v2
./log/latest
./log/latest_build
./log/COLCON_IGNORE
./bin/.keep
./install/COLCON_IGNORE
./install/camera_msgs/share/camera_msgs/package.dsv
./Movie/3D/Terrain/FS_autonomous_TrackDrive.roadgeo
./MovieNX/data/Camera/Camera.cfg
./ros/ros2_ws/build/cmrosutils/ament_cmake_index/share/ament_index/resource_index/packages/cmrosutils
./ros/ros2_ws/build/cmrosutils/ament_cmake_index/share/ament_index/resource_index/rust_packages/cmrosutils
./ros/ros2_ws/build/cmrosutils/rosidl_generator_py/cmrosutils/__init__.py
./ros/ros2_ws/build/cmrosutils/.cmake/api/v1/query/client-colcon-cmake/codemodel-v2
./ros/ros2_ws/build/cmrosutils/ament_cmake_python/cmrosutils/cmrosutils/__init__.py
./ros/ros2_ws/build/COLCON_IGNORE
./ros/ros2_ws/build/camera_msgs/ament_cmake_index/share/ament_index/resource_index/packages/camera_msgs
./ros/ros2_ws/build/camera_msgs/ament_cmake_index/share/ament_index/resource_index/rust_packages/camera_msgs
./ros/ros2_ws/build/camera_msgs/rosidl_generator_py/camera_msgs/__init__.py
./ros/ros2_ws/build/camera_msgs/.cmake/api/v1/query/client-colcon-cmake/codemodel-v2
./ros/ros2_ws/build/camera_msgs/ament_cmake_python/camera_msgs/camera_msgs/__init__.py
./ros/ros2_ws/build/hellocm/ament_cmake_index/share/ament_index/resource_index/packages/hellocm
./ros/ros2_ws/build/hellocm/.cmake/api/v1/query/client-colcon-cmake/codemodel-v2
./ros/ros2_ws/build/hellocm_msgs/ament_cmake_index/share/ament_index/resource_index/packages/hellocm_msgs
./ros/ros2_ws/build/hellocm_msgs/ament_cmake_index/share/ament_index/resource_index/rust_packages/hellocm_msgs
./ros/ros2_ws/build/hellocm_msgs/rosidl_generator_py/hellocm_msgs/__init__.py
./ros/ros2_ws/build/hellocm_msgs/.cmake/api/v1/query/client-colcon-cmake/codemodel-v2
./ros/ros2_ws/build/hellocm_msgs/ament_cmake_python/hellocm_msgs/hellocm_msgs/__init__.py
./ros/ros2_ws/build/vehiclecontrol_msgs/ament_cmake_index/share/ament_index/resource_index/packages/vehiclecontrol_msgs
./ros/ros2_ws/build/vehiclecontrol_msgs/ament_cmake_index/share/ament_index/resource_index/rust_packages/vehiclecontrol_msgs
./ros/ros2_ws/build/vehiclecontrol_msgs/rosidl_generator_py/vehiclecontrol_msgs/__init__.py
./ros/ros2_ws/build/vehiclecontrol_msgs/.cmake/api/v1/query/client-colcon-cmake/codemodel-v2
./ros/ros2_ws/build/vehiclecontrol_msgs/ament_cmake_python/vehiclecontrol_msgs/vehiclecontrol_msgs/__init__.py
./ros/ros2_ws/log/COLCON_IGNORE
./ros/ros2_ws/log/build_2026-04-29_20-00-38/camera_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-29_20-00-38/hellocm/stderr.log
./ros/ros2_ws/log/build_2026-04-29_20-00-38/hellocm_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-29_20-00-38/vehiclecontrol_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-27-44/camera_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-27-44/hellocm/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-27-44/hellocm_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-27-44/vehiclecontrol_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-29-03/camera_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-29-03/hellocm/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-29-03/hellocm_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-29-03/vehiclecontrol_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-45-33/camera_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-45-33/hellocm/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-45-33/hellocm_msgs/stderr.log
./ros/ros2_ws/log/build_2026-04-28_20-45-33/vehiclecontrol_msgs/stderr.log
./ros/ros2_ws/install/COLCON_IGNORE
./ros/ros2_ws/install/camera_msgs/share/ament_index/resource_index/packages/camera_msgs
./ros/ros2_ws/install/camera_msgs/share/ament_index/resource_index/rust_packages/camera_msgs
./ros/ros2_ws/install/camera_msgs/local/lib/python3.10/dist-packages/camera_msgs/__init__.py
./ros/ros2_ws/install/hellocm_msgs/share/ament_index/resource_index/packages/hellocm_msgs
./ros/ros2_ws/install/hellocm_msgs/share/ament_index/resource_index/rust_packages/hellocm_msgs
./ros/ros2_ws/install/hellocm_msgs/local/lib/python3.10/dist-packages/hellocm_msgs/__init__.py
./ros/ros2_ws/install/vehiclecontrol_msgs/share/ament_index/resource_index/packages/vehiclecontrol_msgs
./ros/ros2_ws/install/vehiclecontrol_msgs/share/ament_index/resource_index/rust_packages/vehiclecontrol_msgs
./ros/ros2_ws/install/vehiclecontrol_msgs/local/lib/python3.10/dist-packages/vehiclecontrol_msgs/__init__.py
uweai@uweai-ssd:~/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous$ cat ros/ros2_ws/build/cmrosutils/CMakeFiles/cmrosif.dir/link.txt
/usr/bin/c++ -fPIC -Wl,--no-undefined -shared -Wl,-soname,libcmrosif.so -o libcmrosif.so CMakeFiles/cmrosif.dir/src/cmrosif.cpp.o -Wl,-rpath,/opt/ros/humble/lib:/home/uweai/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous/ros/ros2_ws/build/cmrosutils: /opt/ros/humble/lib/librclcpp.so /home/uweai/Downloads/formula-carmaker-fs_2025/FCM_Projects/FS_autonomous/ros/ros2_ws/src/cmrosutils/lib/libCMJob.a libcmrosutils__rosidl_typesupport_cpp.so /opt/ros/humble/lib/liblibstatistics_collector.so /opt/ros/humble/lib/librcl.so /opt/ros/humble/lib/librmw_implementation.so /opt/ros/humble/lib/libament_index_cpp.so /opt/ros/humble/lib/librcl_logging_spdlog.so /opt/ros/humble/lib/librcl_logging_interface.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_introspection_c.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_cpp.so /opt/ros/humble/lib/librcl_interfaces__rosidl_generator_py.so /opt/ros/humble/lib/librcl_interfaces__rosidl_typesupport_c.so /opt/ros/humble/lib/librcl_interfaces__rosidl_generator_c.so /opt/ros/humble/lib/librcl_yaml_param_parser.so /opt/ros/humble/lib/libyaml.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_introspection_c.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_cpp.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_generator_py.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_typesupport_c.so /opt/ros/humble/lib/librosgraph_msgs__rosidl_generator_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/librosidl_typesupport_fastrtps_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/librosidl_typesupport_fastrtps_cpp.so /opt/ros/humble/lib/librmw.so /opt/ros/humble/lib/libfastcdr.so.1.0.29 /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_introspection_c.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_introspection_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/librosidl_typesupport_introspection_cpp.so /opt/ros/humble/lib/librosidl_typesupport_introspection_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_cpp.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_generator_py.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_generator_py.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_typesupport_c.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_c.so /opt/ros/humble/lib/libstatistics_msgs__rosidl_generator_c.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_generator_c.so /usr/lib/x86_64-linux-gnu/libpython3.10.so /opt/ros/humble/lib/libtracetools.so /opt/ros/humble/lib/libbuiltin_interfaces__rosidl_typesupport_cpp.so /opt/ros/humble/lib/librosidl_typesupport_cpp.so /opt/ros/humble/lib/librosidl_typesupport_c.so /opt/ros/humble/lib/librcpputils.so /opt/ros/humble/lib/librosidl_runtime_c.so /opt/ros/humble/lib/librcutils.so -ldl -latomic
The files were extracted from the default Formula CarMaker Package on the IPG customer area, which are .zip format.
Hi Marcela,
I followed up the previous log with some debugging with ChatGPT. I found that the ros-humble-rosidl-generator-rs package is providing a “–no-undefined” flag, which may be the cause of the issue. I updated the CMakeLists in cmrosutils to be:
...
rosidl_generate_interfaces(${PROJECT_NAME}
"srv/CMRemoteControl.srv"
DEPENDENCIES
builtin_interfaces
)
# rosidl_generator_rs injects -Wl,--no-undefined globally.
# cmrosif is a CarMaker plugin-style shared library and intentionally leaves
# CarMaker symbols unresolved until loaded by the CarMaker application.
string(REPLACE "-Wl,--no-undefined" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
## Declare a C++ library
find_library(CMJob_LIB NAMES "CMJob" PATHS "lib")
add_library(cmrosif SHARED
src/cmrosif.cpp
)
...
This allows the package to fully build, and I can run the CMStart.sh script (GUI starts, some other graphics issues to resolve but these are common to previous FCM versions).
Is this acceptable as a fix, or will this potentially cause other issues?
This is very useful.
From the link.txt output, I can see that the linker command includes:
-Wl,--no-undefined
This explains the remaining error. The cmrosif library is built as a CarMaker plugin-style shared library, so symbols such as SimCore, Log, GuiCmd_Eval, SimStart, and SimStop2 are expected to be provided by the CarMaker application at runtime, rather than being resolved during the ROS 2 package build.
Because of that, forcing –no-undefined causes the build to fail, even though those symbols are valid in the intended runtime context.
So yes, removing -Wl,–no-undefined for cmrosif is a reasonable fix, and it should not cause issues as long as the change is limited to this target/build context. It is not masking a missing ROS dependency; it is preventing the linker from rejecting symbols that are intentionally resolved by CarMaker later.
The only thing I would avoid is applying this globally if it affects unrelated packages.
Your earlier issue with libcmcppifloader-linux64.so was also real, since it was extracted as an empty file instead of a symbolic link. So there were effectively two separate issues:
-
The .zip extraction broke the libcmcppifloader-linux64.so symbolic link.
-
The ROS 2 build environment introduced -Wl,–no-undefined, which is not compatible with how cmrosif is linked.
Thanks for debugging this further 