我想在C中嵌入python。但是我发现我的程序中嵌入的python解释器的版本是2.7(mac上的默认版本)。
当我在 mac os x 中编译 c 代码时,如何指定 python 解释器的特定版本。os x 中的 gcc 与 linux 中的 gcc 肯定不同。
我已经通过 HomeBrew 安装了 python3。
多谢。
更新:我尝试使用python3.4-config --cflags并python3.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) 在Linux Device Driver 3rd ed一书中,/proc文件系统用作输出方法来导出某个设备驱动程序的运行状态.
但是,在某些情况下,/proc文件系统用作一个接口来更改驱动程序模块的内部参数.
我google了很多,发现互联网上的一些实现太旧了,他们使用create_proc_entry()而不是proc_create().
更重要的是,我更喜欢实现这个seq_file(实际上,我不确定是否可能).我检查了这个seq_write()功能,什么都没得到.
谁能告诉我一个完成这项任务的例子?seq_file实施是更优选的.
在LDD3一书中,如果一个驱动程序想要控制CPU的引脚,它应该调用request_region()函数来声明端口的使用.
但是,当我想在我的Raspberry Pi上实现一个简单的驱动程序模块时,我在本例中发现端口的请求是由gpio_request()函数实现的.
为什么以及何时需要使用gpio_request()而不是request_region()?而且,这两个功能的不同之处是什么.
顺便说一下:我逐页搜索了LDD3,但我找不到任何有关GPIO...为什么没有任何介绍的线索GPIO?是因为2.6内核版本?
为了方便起见,我想在GDB中定义一些辅助marcos,其中一个就是offsetof()宏.
我试过了
define offsetof
if $argc == 2
(int)(&((($arg0 *)0)->$arg1))
end
end
Run Code Online (Sandbox Code Playgroud)
它不工作:1类不如struct node将分裂成Struct和node,所以$arg0 = Struct,$arg1 = node.2.我不确定gdb的命令是否可以返回值.
任何人都可以帮我一把吗?
我正在关注Linux设备驱动程序(第3版).当我试图模仿第6章中的scull示例时,会报告错误.它说:
error: implicit declaration of function ‘init_MUTEX’ [-Werror=implicit-function-declaration]
Run Code Online (Sandbox Code Playgroud)
谁能告诉我init_MUTEX去了哪里?顺便说一句,是否有一个列表可以检查所有内核API更改?
Altprintk()打印的信息只能在++ ~Ctrl控制台下看到。F1F7
这些控制台无法回滚,因此调试非常不方便。我正在使用KDE桌面环境和控制台终端。如何将 printk() 消息重定向到控制台?
我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,所以请给我一些阅读材料来澄清它.当然,除了阅读材料,我实际上需要一个解决方案来解决这个问题.
当我在 $HOME 目录的根目录中打开 CtrlP 时,CtrlP 的默认文件模式太慢了。这是由于我的主目录中有太多文件和目录。
我已经根据这个答案通过使用ag命令加快了扫描速度。但是,扫描速度仍然很慢。
所以,我想将MRU模式设置为CtrlP的默认模式。怎么做?