Building GDB with a cross-compiler, including Python support
N.B. Corrections and improvements to these instructions are welcome!
Cross-compiling a program that links with Python is problematic. The right way involves running python-config.py, but in a cross-compilation build you don't necessarily have a python to run, and the config for the host's python is wrong.
Here is one solution. Basically, it involves a shell script that returns the same results that python-config.py would, and you pass that as the argument to --with-python.
Example:
bash$ cat $HOME/my-python-for-config #! /bin/sh if [ $# -ne 2 ] then echo "Bad # args. Blech!" >&2 exit 1 fi # The first argument is the path to python-config.py, ignore it. case "$2" in --includes) echo "-I/usr/include/python2.6" ;; --ldflags) echo "-L/usr/lib/python2.6/config -lpthread -ldl -lutil -lm -lpython2.6" ;; --exec-prefix) echo "/usr" ;; *) echo "Bad arg $2. Blech!" >&2 ; exit 1 ;; esac exit 0 bash$ chmod +x $HOME/my-python-for-config bash$ ./configure --with-python=$HOME/my-python-for-config [...] [...]
You need to provide your own values for --includes, --ldflags, --exec-prefix. The values shown above are obviously for a native build (but useful to exercise the script :)). The best way to get the needed values is if you have python installed on the target system and run python-config.py there.
Example:
bash$ cd $src/gdb bash$ python python/python-config.py --includes [record this output] bash$ python python/python-config.py --ldflags [record this output] bash$ python python/python-config.py --exec-prefix [record this output]
or
bash$ python-config --includes [record this output] bash$ python-config --ldflags [record this output] bash$ python-config --exec-prefix [record this output]