gpt4 book ai didi

python - argc 始终为零

转载 作者:太空宇宙 更新时间:2023-11-04 03:17:57 27 4
gpt4 key购买 nike

这是此问题的后续问题:Minimal example of Python interpreter embedding segfaults .

当我这样编译程序时:

gcc -fno-diagnostics-color -Wall -Wno-unused-function \
-I. -fPIC -g3 -shared -I/usr/include/python3.5m \
-I/usr/include/python3.5m -Wno-unused-result \
-Wsign-compare -g \
-fdebug-prefix-map=/build/python3.5-nLrllb/python3.5-3.5.3=. \
-fstack-protector-strong -Wformat -Werror=format-security \
-DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes \
-L/usr/lib/python3.5/config-3.5m-x86_64-linux-gnu -L/usr/lib \
-lpython3.5m -lpthread -ldl -lutil -lm -Xlinker -export-dynamic \
-Wl,-O1 -Wl,-Bsymbolic-functions ./main.o ./binparser.o \
-o protopy

选项较多是因为运行:

/usr/bin/python3.5-config --cflags/usr/bin/python3.5-config --ldconfig 并尝试将它们合并到构建( -fPIC 似乎是强制性的,没有 -shared 它不会链接,因为我认为这是您可以链接 Python 库的唯一方法.

然后当我在 GDB 中运行编译后的程序时,main() 总是没有参数。无论我是执行 r foo bar 还是 set args foo bar

有什么想法吗?我不知道这里所有的 gcc 选项都有什么作用,所以,也许是其中一些选项?

最佳答案

期望 gdb 在被调用的共享对象中设置有意义的断点是不合理的,就好像它是可执行文件一样。如果您在按 the linked question 中所述构建的二进制文件上使用 strace ,在对真正的可执行文件使用 strace 时通常会从动态链接器看到的任何系统调用之前,您会立即看到一个段错误。

关于python - argc 始终为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49552246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com