Cross-compile: How to install with one prefix, and

2019-03-25 11:49发布

问题:

I'm trying to cross-compile some applications for an alternative architecture.

My typical procedure is as follows:

  1. Download and untar source into /var/source
  2. ./configure --prefix=/var/install CC=[my-cross-compiler-gcc]
  3. make
  4. make install

This works as expected: My application is installed into /var/install.

However, when I deploy this application onto my alternative architecture, I don't want it deployed in /var/install. I just want it installed in / as normal.

I can copy it into /, however the application itself is still trying to look inside /var/install for various default settings.

I want to compile and install the software on my x86 system, but when I deploy it on the alternative architecture, I want it to be as if I had installed it into /, not in /var/install.

Is there a way to accomplish what I'm trying to do?

回答1:

If I understand correctly, /var/install on your x86 system will be / on your alternative architecture. To solve your issue, you need to modify the following step:

  • configure will certainly do some sed in file, so you need to specify the final place

    ./configure --prefix=/ CC=[my-cross-compiler-gcc]

  • makefile generated by automake have support of variable DESTDIR which is prepended to the installation path:

    make DESTDIR=/var/install install



回答2:

I had a similar problem, but I was cross-compiling and wanted to install to the root directory of my device. In this case I specified:

make install DESTDIR=<path/to/rootfs>