[ros-users] Cross-Compilation Patch

Brian Gerkey gerkey at willowgarage.com
Mon Jul 12 19:53:25 UTC 2010


hi Cedric, Daniel,

Happy to hear of at least partial success in cross-compiling ROS for
other platforms.  This is something that we definitely want to
support.  I will be merging Cedric's patches, but haven't made it a
high priority.  If your work would be made much easier if the patches
were merged, let me know.  Also, if there's something that we can do,
perhaps at ros.org or code.ros.org, to facilitate hosting and sharing
information about cross-compiling, please don't hesitate to ask.

	brian.

On Sat, Jul 10, 2010 at 7:03 PM, Daniel Stonier <d.stonier at gmail.com> wrote:
>
> I have thought about doing that - it's not hard to add a bit of extra cmake
> to get it to build both toolchain and runtime debs/rpms. However, there's a
> huge number of embedded platforms out there and you'll often want to fully
> optimise your build flags (-march and -mtune/-mcpu) to get as much speed as
> possible on your embedded board so my first priority is just to get some
> cross recipes from source up and working as that provides a convenient way
> to cover all bases.
> If you want to add to the cmake scripts with some packaging code, feel free
> to send some modifications in, or I can give you direct access. Later I
> might tackle it myself - even if it's only for personal repos, it would help
> in development in some instances.
>
> On 10 July 2010 16:36, Cedric Pradalier <cedric.pradalier at mavt.ethz.ch>
> wrote:
>>
>> Hello Daniel,
>>
>> I'm very glad to hear that you're so advanced on the cross-compilation
>> question. I am still experimenting and making it work by trial and
>> errors...
>> Do you thing there would be a chance to setup a package repository with
>> the built binaries? I'm running a stripped down ubuntu on my gumstix
>> verdex and overo, and having pre-built packages would be a game changer.
>> However, for these applications, the deb-packages would have to be
>> cleaned up to save a bit of space :)
>>
>> Best,
>>
>> On 07/10/10 06:36, Daniel Stonier wrote:
>> > There are already some patches submitted to ros trac covering some of
>> > these things - while they didn't get in in time for cturtle, hopefully
>> > they'll be in the next release
>> >
>> > https://code.ros.org/trac/ros/ticket/2803 - sets up rospack for a
>> > twopass
>> > https://code.ros.org/trac/ros/ticket/2805 - sets up genmsg_cpp for a
>> > twopass
>> > https://code.ros.org/trac/ros/ticket/2823 - a fix for a stray test
>> > that causes a problem in crossing topic_tools
>> > https://code.ros.org/trac/ros/ticket/2822 - a fix for a find_file in
>> > cmake that can't find things in a cross in message_filters
>> > https://code.ros.org/trac/ros/ticket/2821 - find_file again causing
>> > problems in topic_tools
>> > https://code.ros.org/trac/ros/ticket/2670 - fix to allow
>> > rostoolchain.cmake and rosconfig.cmake to exist together
>> >
>> > Your fix for private.cmake I was sure I submitted a few months ago,
>> > but I can't find it in the trac system - I maintain exactly the same
>> > patch myself. I'll check it again a bit later to make sure its there.
>> > I've also got a cross compiled opencv package for embedded systems
>> > (minus all the gui components) that does what you're doing and a bit
>> > more:
>> >
>> > svn export
>> > http://embedded-control-library.googlecode.com/svn/trunk/ecl_vision/opencv_embedded
>> > ./opencv
>> >
>> > On 9 July 2010 21:55, Cedric Pradalier<cedric.pradalier at mavt.ethz.ch>
>> >  wrote:
>> >
>> >> Hi,
>> >>
>> >> I'd like to suggest the 2 micro-patch to help cross-compiling ros.
>> >>
>> >> ======== ROS BUILD ========
>> >> I now use more the rostoolchain.cmake and I really think that's the way
>> >> forward. Mine looks like that:
>> >> set(CMAKE_SYSTEM_NAME Linux)
>> >> set(CMAKE_SYSTEM_PROCESSOR arm-angstrom-linux-gnueabi)
>> >> set(GUMSTIXTOP [...]/overo-oe)
>> >> set(GUMSTIXFS [...]/overo-dev)
>> >> set(CMAKE_C_COMPILER
>> >>
>> >>
>> >> ${GUMSTIXTOP}/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi-gcc-sysroot)
>> >> set(CMAKE_CXX_COMPILER
>> >>
>> >>
>> >> ${GUMSTIXTOP}/tmp/cross/armv7a/bin/arm-angstrom-linux-gnueabi-g++-sysroot)
>> >> set(CMAKE_FIND_ROOT_PATH ${GUMSTIXFS})
>> >> set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
>> >> set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
>> >> set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
>> >>
>> >> The CMAKE_FIND... directives are conflicting with the
>> >> _rosbuild_add_rostest and _rosbuild_add_pyunit in
>> >> rosbuild/private.cmake. This can be corrected by applying the following
>> >> patch:
>> >> -  find_file(_file_name ${file} ${PROJECT_SOURCE_DIR} /)
>> >> +  find_file(_file_name "${file}" "${PROJECT_SOURCE_DIR}" /
>> >> NO_CMAKE_FIND_ROOT_PATH)
>> >> in both function. This will force find_file to ignore the
>> >> CMAKE_FIND_ROOT_PATH for these functions. This is fine since they seem
>> >> to be used only to refer to local files.
>> >>
>> >> ======== OpenCV ========
>> >> In OpenCV, the Makefile does not use the toolchain file. I've modified
>> >> mine as follows. There might cleaner ways to get the same semantic.
>> >> CMAKE = cmake
>> >> TOOLCHAIN =
>> >> ifeq (x$(wildcard
>> >> $(ROS_ROOT)/rostoolchain.cmake),x$(ROS_ROOT)/rostoolchain.cmake)
>> >>      TOOLCHAIN = -DCMAKE_TOOLCHAIN_FILE=$(ROS_ROOT)/rostoolchain.cmake
>> >> endif
>> >> CMAKE_ARGS = $(TOOLCHAIN) -D CMAKE_BUILD_TYPE=RELEASE \
>> >>               -D CMAKE_INSTALL_PREFIX=`rospack find
>> >> opencv2`/$(INSTALL_DIR) \
>> >>               ...
>> >> =========================
>> >> Next thing is to find a way to generate rospack and rosstack twice,
>> >> once
>> >> for host, another for deployment, and to call a different one during
>> >> compilation and at runtime. Any idea?
>> >>
>> >> HTH
>> >>
>> >> --
>> >> Dr. Cedric Pradalier
>> >> http://www.asl.ethz.ch/people/cedricp
>> >>
>> >> _______________________________________________
>> >> ros-users mailing list
>> >> ros-users at code.ros.org
>> >> https://code.ros.org/mailman/listinfo/ros-users
>> >>
>> >>
>> >
>> >
>> >
>>
>>
>> --
>> Dr. Cedric Pradalier
>> http://www.asl.ethz.ch/people/cedricp
>>
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
>
>
>
> --
> Phone : +82-10-5400-3296 (010-5400-3296)
> Home: http://snorriheim.dnsdojo.com/
> Yujin Robot: http://www.yujinrobot.com/
> Embedded Control Libraries: http://snorriheim.dnsdojo.com/redmine/wiki/ecl
>
> _______________________________________________
> ros-users mailing list
> ros-users at code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users
>
>



More information about the ros-users mailing list