微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用自定义python从源代码构建gdb 10.1

如何解决使用自定义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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?