我想只为python2添加一个特定的库路径.然而,在添加export PYTHONPATH="/path/to/lib/"到my .bashrc之后,执行python3会收到错误:您的PYTHONPATH指向Python 2.x的site-packages目录但您运行的是Python 3.x!
我认为这是由于python2和python3共享公共PYTHONPATH变量.
那么,我可以PYTHONPATH分别为python2和python3 设置不同的变量.如果没有,我如何将库路径专门添加到特定版本的python?
内核开发实际上与传统的C项目开发不同(从我看来,作为一个新手).所以,我总是想知道内核黑客的vim配置是什么.
最重要的是如何在vim中导航内核源代码树.但我尝试过ctags,它的工作非常糟糕.
有人能给我一个线索吗?
我想在一个bash会话中同时运行几个python脚本,并分别实时检查它们的输出.为了完成这个任务,我写了一个简单的bash脚本,如下所示:
#!/bin/bash
python 1.py > 1.output &
python 2.py > 2.output &
python 3.py > 3.output &
Run Code Online (Sandbox Code Playgroud)
但是,当我使用cat 1.output命令检查在执行过程中打印的内容时,看不到任何内容.
经过一段时间的思考,我意识到1.output必须在1.py完成执行时填写.换句话说,我在这里使用的方法不是real time时尚.
您可能会建议等待这些python脚本完成.不幸的是,事实上所有python脚本实际上都是长期运行的程序,它们可能在几天或几个月后完成,这就是我想要实时检查它们的输出的原因.
此外,您可能建议我修改python脚本以直接将消息打印到文件而不是stdout.对不起,这里的脚本太复杂了,无法修改,其中有很多print功能.
我现在能做什么?
即使set mouse=a已添加到.vimrc文件中,我的vim也无法在iTerm2中滚动.
但是,在tmux中,vim的滚动功能正常工作.
我的vim出了什么问题?
在Linux内核中linux/arch/x86/boot/main.c,我发现了一段内联asm代码:
asm("leal %P1(%%esp),%0"
: "=r" (stack_end) : "i" (-STACK_SIZE));
Run Code Online (Sandbox Code Playgroud)
这段代码非常简单,但%P1让我很困惑.我检查了一些汇编语言教程,但没有发现这一点.
那么,有人能给我一些关于此的线索吗?
我按照以下步骤编译了python 2.7.11:
tar -xf python.tar.xz
./configure
make
Run Code Online (Sandbox Code Playgroud)
编译后,我发现结果中没有libpython2.7.so,这意味着这不是'dev'版本.
那么,我怎样才能制作.so文件并正确安装它们(不要覆盖系统的默认python)?
我想检查一下我刚刚完成的内核驱动模块是否存在内存泄漏问题。但我不知道如何在内核空间中做到这一点。我认为动态内存分配很难处理。有人有在内核空间调试此类内存问题的经验吗?或者,我可以使用哪个工具来测量特定内核模块的动态内存使用情况?
我重新编译了我的Raspberry Pi的Linux内核以启用一些调试功能.新内核是通过https://github.com/raspberrypi/tools提供的工具在我的X86台式机上编译的.新内核似乎工作正常,直到我编译我的hello-world驱动程序模块,并打印下面的信息:
make -C /lib/modules/3.18.10-d0u9/build M=/home/pi/Linux-Device-Driver-3.18/1_Hello-World modules
make[1]: Entering directory '/usr/src/linux-source-3.18'
CC [M] /home/pi/Linux-Device-Driver-3.18/1_Hello-World/main.o
./scripts/recordmcount: 1: ./scripts/recordmcount: Syntax error: "(" unexpected
scripts/Makefile.build:257: recipe for target '/home/pi/Linux-Device-Driver-3.18/1_Hello-World/main.o' failed
make[2]: *** [/home/pi/Linux-Device-Driver-3.18/1_Hello-World/main.o] Error 2
Makefile:1398: recipe for target '_module_/home/pi/Linux-Device-Driver-3.18/1_Hello-World' failed
make[1]: *** [_module_/home/pi/Linux-Device-Driver-3.18/1_Hello-World] Error 2
make[1]: Leaving directory '/usr/src/linux-source-3.18'
Makefile:19: recipe for target 'modules' failed
make: *** [modules] Error 2
Run Code Online (Sandbox Code Playgroud)
该hello-world模块非常简单,并且可以在我的X86 PC上正确编译.
我想也许我编译Linux内核的方式是错误的...
有没有人遇到这个问题?
顺便说一句,如何正确交叉编译内核for raspberry Pi进行驱动程序开发?
我使用-nw选项在gnome-terminal中运行emacs,除了包含shift密钥的一些关键快捷方式外,它运行良好.例如,当我执行C-M-S-v(滚动 - 其他 - 窗口向下)时,C-M-vEmacs 只能识别键,而Emacs又会向上滚动另一个窗口.
我在GUI Emacs中尝试了这些关键快捷方式,一切正常.
我想gnome-terminal或其他终端模拟器一定有问题,比如Mac OS上的iTerm我遇到了同样的问题.
如何在gnome-terminal中启用包含shift键的快捷键?
我知道该.rodata部分将常量数据存储在 ELF 文件中。然而,当我转储内核模块的 ELF 时,我注意到有两个名为rodata.str1.8和的额外部分rodata.str1.1。看起来这两个部分也存储常量变量和字符串。但这三者到底有什么区别呢rodata?
linux-kernel ×3
python ×3
linux ×2
vim ×2
assembly ×1
bash ×1
elf ×1
emacs ×1
gcc ×1
installation ×1
iterm2 ×1
memory ×1
memory-leaks ×1
pythonpath ×1
raspberry-pi ×1
redirect ×1
ubuntu ×1