ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed.

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed.removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:

 ./src/catkin/bin/catkin_make_isolated --cmake-args -CMAKE_CXX_FLAGS="-m32" --install

I got the error message

CMake Error: Error processing file: MAKE_C_FLAGS=-m32

I'm still not sure whether you actually need to build all of ROS from source (as there are still 32bit pkgs available), but to set that CMake variable you'll need to use the -D option, like so:

--cmake-args -DCMAKE_CXX_FLAGS="-m32"

But that will make gcc compile everything for a 32bit target, which may not be what you want.

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:

 ./src/catkin/bin/catkin_make_isolated --cmake-args -CMAKE_CXX_FLAGS="-m32" --install

I got the error message

CMake Error: Error processing file: MAKE_C_FLAGS=-m32

I'm still not sure whether you actually need to build all of ROS from source (as there are still 32bit pkgs available), but to set that CMake variable you'll need to use the -D option, like so:

--cmake-args -DCMAKE_CXX_FLAGS="-m32"

But that will make gcc compile everything for a 32bit target, which may not be what you want.


Edit3:

I know that there are 32Bit Libs for the kinetic version but I need the 64bit Version on my system and at the same time the 32bit version. Is this possible?!

No, unfortunately you cannot install both the i386 and the amd64 packages, as it appears the ROS pkgs don't seem to support multiarch.

Building from source would be an option, but it will require that all your dependencies do support multiarch. Without that, even adding -m32 will most likely not solve your problem.

If this is just a single node, you could perhaps look into using a suitable Docker image containing a 32bit OS and build it in there and run it from a container. Docker containers can communicate with the host quite easily via network, and ROS nodes don't really care where they are run, as long as they can communicate with the master (which would be running on the host) and other nodes.

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:Edit3:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:Edit4:

 ./src/catkin/bin/catkin_make_isolated --cmake-args -CMAKE_CXX_FLAGS="-m32" --install

I got the error message

CMake Error: Error processing file: MAKE_C_FLAGS=-m32

I'm still not sure whether you actually need to build all of ROS from source (as there are still 32bit pkgs available), but to set that CMake variable you'll need to use the -D option, like so:

--cmake-args -DCMAKE_CXX_FLAGS="-m32"

But that will make gcc compile everything for a 32bit target, which may not be what you want.


Edit3:Edit5:

I know that there are 32Bit Libs for the kinetic version but I need the 64bit Version on my system and at the same time the 32bit version. Is this possible?!

No, unfortunately you cannot install both the i386 and the amd64 packages, as it appears the ROS pkgs don't seem to support multiarch.

Building from source would be an option, but it will require that all your dependencies do support multiarch. Without that, even adding -m32 will most likely not solve your problem.

If this is just a single node, you could perhaps look into using a suitable Docker image containing a 32bit OS and build it in there and run it from a container. Docker containers can communicate with the host quite easily via network, and ROS nodes don't really care where they are run, as long as they can communicate with the master (which would be running on the host) and other nodes.

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit3:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit4:

 ./src/catkin/bin/catkin_make_isolated --cmake-args -CMAKE_CXX_FLAGS="-m32" --install

I got the error message

CMake Error: Error processing file: MAKE_C_FLAGS=-m32

I'm still not sure whether you actually need to build all of ROS from source (as there are still 32bit pkgs available), but to set that CMake variable you'll need to use the -D option, like so:

--cmake-args -DCMAKE_CXX_FLAGS="-m32"

But that will make gcc compile everything for a 32bit target, which may not be what you want.


Edit5:

I know that there are 32Bit Libs for the kinetic version but I need the 64bit Version on my system and at the same time the 32bit version. Is this possible?!

No, unfortunately you cannot install both the i386 and the amd64 packages, as it appears the ROS pkgs don't seem to support multiarch.

Building from source would be an option, but it will require that all your dependencies do support multiarch. Without that, even adding -m32 will most likely not solve your problem.

If this is just a single node, you could perhaps look into using a suitable Docker image containing a 32bit OS and build it in there and run it from a container. Docker containers can communicate with the host quite easily via network, and ROS nodes don't really care where they are run, as long as they can communicate with the master (which would be running on the host) and other nodes.


Edit4:

 ./src/catkin/bin/catkin_make_isolated --cmake-args -CMAKE_CXX_FLAGS="-m32" --install

I got the error message

CMake Error: Error processing file: MAKE_C_FLAGS=-m32

I'm still not sure whether you actually need to build all of ROS from source (as there are still 32bit pkgs available), but to set that CMake variable you'll need to use the -D option, like so:

--cmake-args -DCMAKE_CXX_FLAGS="-m32"

But that will make gcc compile everything for a 32bit target, which may not be what you want.


Edit3:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?

Edit6:

Hi My goal is that I am able to build the node and provide the used 32bit librarys for the node. Then I would install the librarys and the node on the target with the 64bit system to communicate with the master there. Is that not possible? I want to avoid to use a docker or something else.

To my knowledge -- and based on the information that you've provided -- this is not possible without some form of isolation between your 64bit and 32bit runtime environments. A chroot or similar system (like Docker, LXC, etc) could provide that.

Building ROS Kinetic from source for 32bit could work, but only if all the dependencies for that are available in 32bit and support multiarch. I don't know whether that is the case.

Note that this is not a ROS specific problem at all, it would be a problem with any framework trying to mix 64 and 32 bit objects.

I'm assuming the library that you have to use was given to you (by an mfg fi) and you have to work with it. Otherwise, I'd suggest trying to obtain a 64bit version of it, as that will make everything significantly easier.


Edit5:

I know that there are 32Bit Libs for the kinetic version but I need the 64bit Version on my system and at the same time the 32bit version. Is this possible?!

No, unfortunately you cannot install both the i386 and the amd64 packages, as it appears the ROS pkgs don't seem to support multiarch.

Building from source would be an option, but it will require that all your dependencies do support multiarch. Without that, even adding -m32 will most likely not solve your problem.

If this is just a single node, you could perhaps look into using a suitable Docker image containing a 32bit OS and build it in there and run it from a container. Docker containers can communicate with the host quite easily via network, and ROS nodes don't really care where they are run, as long as they can communicate with the master (which would be running on the host) and other nodes.


Edit4:

 ./src/catkin/bin/catkin_make_isolated --cmake-args -CMAKE_CXX_FLAGS="-m32" --install

I got the error message

CMake Error: Error processing file: MAKE_C_FLAGS=-m32

I'm still not sure whether you actually need to build all of ROS from source (as there are still 32bit pkgs available), but to set that CMake variable you'll need to use the -D option, like so:

--cmake-args -DCMAKE_CXX_FLAGS="-m32"

But that will make gcc compile everything for a 32bit target, which may not be what you want.


Edit3:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?

Edit7:

I found now the way to download the 32bit libraries and i tried it with the libroscpp. and it works but now he needs much more libraries. Is there a way to download all libraries with one package?!

I believe this would be best asked in a new question, as otherwise we start to meander into new topics in this one.

But any answer to your edit would depend on what you are currently doing to "download the 32bit libraries".


Edit6:

Hi My goal is that I am able to build the node and provide the used 32bit librarys for the node. Then I would install the librarys and the node on the target with the 64bit system to communicate with the master there. Is that not possible? I want to avoid to use a docker or something else.

To my knowledge -- and based on the information that you've provided -- this is not possible without some form of isolation between your 64bit and 32bit runtime environments. A chroot or similar system (like Docker, LXC, etc) could provide that.

Building ROS Kinetic from source for 32bit could work, but only if all the dependencies for that are available in 32bit and support multiarch. I don't know whether that is the case.

Note that this is not a ROS specific problem at all, it would be a problem with any framework trying to mix 64 and 32 bit objects.

I'm assuming the library that you have to use was given to you (by an mfg fi) and you have to work with it. Otherwise, I'd suggest trying to obtain a 64bit version of it, as that will make everything significantly easier.


Edit5:

I know that there are 32Bit Libs for the kinetic version but I need the 64bit Version on my system and at the same time the 32bit version. Is this possible?!

No, unfortunately you cannot install both the i386 and the amd64 packages, as it appears the ROS pkgs don't seem to support multiarch.

Building from source would be an option, but it will require that all your dependencies do support multiarch. Without that, even adding -m32 will most likely not solve your problem.

If this is just a single node, you could perhaps look into using a suitable Docker image containing a 32bit OS and build it in there and run it from a container. Docker containers can communicate with the host quite easily via network, and ROS nodes don't really care where they are run, as long as they can communicate with the master (which would be running on the host) and other nodes.


Edit4:

 ./src/catkin/bin/catkin_make_isolated --cmake-args -CMAKE_CXX_FLAGS="-m32" --install

I got the error message

CMake Error: Error processing file: MAKE_C_FLAGS=-m32

I'm still not sure whether you actually need to build all of ROS from source (as there are still 32bit pkgs available), but to set that CMake variable you'll need to use the -D option, like so:

--cmake-args -DCMAKE_CXX_FLAGS="-m32"

But that will make gcc compile everything for a 32bit target, which may not be what you want.


Edit3:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


Edit2:

So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?


Edit:

I need a system with a 64bit version of Kinetic for the ROS nodes but one node is a 32 bit node thats the reason why I need the 32 libraries. I compiled it myself and it works perfect for 64 bit. I tried to compile the 32 bit version but it doesn't work

I don't really understand what you're trying to say. "Does not work" is not enough information to help you.

You cannot link 32bit libraries into 64bit binaries or the other way around. If you need to work with a 32bit library, I believe you have no other option to build a 32bit node as well.

Adding -m32 to your flags could be a way to do that, but it depends on what other stuff you have in your workspace. To make this a package-local setting, I'd try to add this to the appropriate CMakeLists.txt (the one of the package). But you'll probably need to have certain parts of the 32bit distribution of ROS (and other libraries) on your system as well.


So I need the ROS libraries in a 32Bit version but i found currently no way to install them

There should still be 32bit binaries for Kinetic - only for Lunar and newer releases the 32bit builds have been removed (see also REP-3).

See the overview page of the Kinetic installation docs for Ubuntu Xenial: it has columns for both amd64 as well as i386.

However: by default, an amd64 installation of Ubuntu will only install 64bit packages, even if the repository contains other architectures. You'll have to enable the i386 architecture and then ask apt to install i386 packages explicitly. See Installing 32-bit libraries on Ubuntu 16.04 Xenial Xerus for a page that describes how to do this.

I can't guarantee that it'll work, but in a nutshell:

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install some-ros-package:i386

or to build them myself!

Source install instructions can be found on the wiki (right next to all other installation instructions): wiki/kinetic/Installation/Source.

Installation using deb packages (for Debian/Ubuntu at least) is however almost always preferred.

I wrote in the forum that this problem was already discussed but i found no working answer

Which forum are you referring to here?