如何解决使用自定义python从源代码构建gdb 10.1
我正在尝试从源代码构建最新的gdb 10.1。
[我想这样做的原因是,我正在尝试调试一个程序,该程序链接到Python 2.7.18的自定义版本,并且我的系统gdb已链接到我的/中的Python 2.7.5的版本。 lib64目录,并且不适用于较新的版本]。
已通读自述文件,已使用以下命令进行配置:
spinner.setonItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView,View selectedItemView,int position,long id) {
// your code here with selected **item position**
}
@Override
public void onnothingSelected(AdapterView<?> parentView) {
// your code here
}
});
...然后运行
../gdb-10.1/configure --with-python=<path to my 2.7.18 installation> --prefix=<path to where I want the new gdb to go>
...按照说明进行操作。但是,每次构建尝试都将失败,并显示以下形式的错误消息:
make all install
在检查配置步骤的输出以及Makefile本身时,我根本找不到对在配置时指定的Python安装的引用(并且为了确保该位置,我也将其放在LD_LIBRARY_PATH的开头)编译器和链接器在构建时可以找到它。
我在这里想念什么?
解决方法
最近我做了类似的事情,尽管遇到了不同的问题,但也很挣扎。
我怀疑您的构建问题可能与您使用LD_LIBRARY_PATH或其他来自环境(PATH,CFLAGS,LDFLAGS等)有关。您不必在构建期间进行设置。
这是我所做的事情的概述:
(1)对于gdb的构建,我使用了这样的方法:
export PATH=/usr/local/bin:/usr/bin:/bin:/sbin:/usr/sbin
unset LD_LIBRARY_PATH
../gdb-10.1/configure --prefix=/opt/gdb-10.1 --with-python=/opt/conda-py2.7.18
make &> make.log
make install &> make-install.log
PATH的集合和LD_LIBRARY_PATH的未设置旨在清除环境。这样可以确保构建只能使用--with-python
来定位python(本身位于python前缀下的bin/python
)。 (也未设置CFLAGS和LDFLAGS,也未设置任何PYTHON变量。)
我保留了make阶段的输出。如果您查看那里,应该会看到with-python
选项被选中。
一切正常。
(2)要调用调试器(并在/ opt下使用我的python),我需要执行一个额外的步骤:设置LD_LIBRARY_PATH以便使用我的pythons libpython:
export LD_LIBRARY_PATH=/opt/conda-py2.7.18/lib
/opt/gdb-10.1/bin/gdb
(gdb) python import sys; print(sys.version)
2.7.18 | Anaconda,Inc.
很高兴找到一种方法来避免需要设置LD_LIBRARY_PATH;这可能需要静态链接libpython,或者引入一些构建标志,例如,使用rpath。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。