小编Dou*_* Su的帖子

如何在 OS X 中的 c 中嵌入特定版本的 python 解释器

我想在C中嵌入python。但是我发现我的程序中嵌入的python解释器的版本是2.7(mac上的默认版本)。

当我在 mac os x 中编译 c 代码时,如何指定 python 解释器的特定版本。os x 中的 gcc 与 linux 中的 gcc 肯定不同。

我已经通过 HomeBrew 安装了 python3。

多谢。


更新:我尝试使用python3.4-config --cflagspython3.4-config --ldflags找出所需的编译器和链接器标志。然后我在编译和链接时得到这些推荐的标志:

-I/usr/local/Cellar/python3/3.4.1/Frameworks/Python.framework/Versions/3.4/include/python3.4m -I/usr/local/Cellar/python3/3.4.1/Frameworks/Python.framework/Versions/3.4/include/python3.4m -Wno-unused-result -Werror=declaration-after-statement -fno-common -dynamic -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I/usr/local/include -I/usr/local/opt/sqlite/include
Run Code Online (Sandbox Code Playgroud)

-L/usr/local/Cellar/python3/3.4.1/Frameworks/Python.framework/Versions/3.4/lib/python3.4/config-3.4m -ldl -framework CoreFoundation -lpython3.4m
Run Code Online (Sandbox Code Playgroud)

之后,我将这些标志与源文件一起组装到 gcc 中,并收到错误:

Undefined symbols for architecture x86_64:
  "_PyUnicodeUCS2_FromString", referenced from:
      _main in py2-5d8da5.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 …
Run Code Online (Sandbox Code Playgroud)

c python macos

5
推荐指数
1
解决办法
834
查看次数

如何在驱动程序模块中使用seq_file实现可写proc文件

Linux Device Driver 3rd ed一书中,/proc文件系统用作输出方法来导出某个设备驱动程序的运行状态.

但是,在某些情况下,/proc文件系统用作一个接口来更改驱动程序模块的内部参数.

我google了很多,发现互联网上的一些实现太旧了,他们使用create_proc_entry()而不是proc_create().

更重要的是,我更喜欢实现这个seq_file(实际上,我不确定是否可能).我检查了这个seq_write()功能,什么都没得到.

谁能告诉我一个完成这项任务的例子?seq_file实施是更优选的.

linux-device-driver linux-kernel

5
推荐指数
2
解决办法
1323
查看次数

为什么在raspberry pi驱动程序中有`gpio_request`而不是`request_region`?

LDD3一书中,如果一个驱动程序想要控制CPU的引脚,它应该调用request_region()函数来声明端口的使用.

但是,当我想在我的Raspberry Pi上实现一个简单的驱动程序模块时,我在本例中发现端口的请求是由gpio_request()函数实现的.

为什么以及何时需要使用gpio_request()而不是request_region()?而且,这两个功能的不同之处是什么.

顺便说一下:我页搜索了LDD3,但我找不到任何有关GPIO...为什么没有任何介绍的线索GPIO?是因为2.6内核版本?

linux driver linux-kernel gpio raspberry-pi

5
推荐指数
1
解决办法
1414
查看次数

如何在GDB中定义offsetof()宏

为了方便起见,我想在GDB中定义一些辅助marcos,其中一个就是offsetof()宏.

我试过了

define offsetof
    if $argc == 2
        (int)(&((($arg0 *)0)->$arg1))
    end
end
Run Code Online (Sandbox Code Playgroud)

它不工作:1类不如struct node将分裂成Structnode,所以$arg0 = Struct,$arg1 = node.2.我不确定gdb的命令是否可以返回值.

任何人都可以帮我一把吗?

c debugging gdb

5
推荐指数
1
解决办法
2523
查看次数

init_MUTEX在linux内核版本3.2中去了哪里?

我正在关注Linux设备驱动程序(第3版).当我试图模仿第6章中的scull示例时,会报告错误.它说:

    error: implicit declaration of function ‘init_MUTEX’ [-Werror=implicit-function-declaration]
Run Code Online (Sandbox Code Playgroud)

谁能告诉我init_MUTEX去了哪里?顺便说一句,是否有一个列表可以检查所有内核API更改?

linux kernel driver linux-device-driver linux-kernel

4
推荐指数
1
解决办法
4683
查看次数

如何在控制台中显示 printk() 消息?

Altprintk()打印的信息只能在++ ~Ctrl控制台下看到。F1F7

这些控制台无法回滚,因此调试非常不方便。我正在使用KDE桌面环境和控制台终端。如何将 printk() 消息重定向到控制台?

linux kernel linux-kernel printk

4
推荐指数
1
解决办法
2万
查看次数

初始化程序中指定的未知字段'ioctl'

ioctl根据书LDD3实现了一个简单的例子来研究接口的用法.当我编译代码时,unknown field 'ioctl' specified in initializer.报告.

我猜LDD3和我之间的内核版本的差异导致了这个错误.我现在使用Debian 8和内核3.18.14,它比LDD3中的 2.6版本要新得多.

我不知道如何ioctl,甚至struct file_operations改变形式2.6到3.18,所以请给我一些阅读材料来澄清它.当然,除了阅读材料,我实际上需要一个解决方案来解决这个问题.

linux filesystems ioctl linux-kernel

2
推荐指数
1
解决办法
5949
查看次数

在CtrlP中,如何将`mru`模式设置为默认模式?

当我在 $HOME 目录的根目录中打开 CtrlP 时,CtrlP 的默认文件模式太慢了。这是由于我的主目录中有太多文件和目录。

我已经根据这个答案通过使用ag命令加快了扫描速度。但是,扫描速度仍然很慢。

所以,我想将MRU模式设置为CtrlP的默认模式。怎么做?

vim ctrlp

2
推荐指数
1
解决办法
2137
查看次数