Articles of Linux操作系统

如何重新configuration​​谷歌testing的32位embedded式软件?

我已经设法根据这个安装Googletesting。 我的问题是:我必须testing一个32位操作系统的embedded式软件开发项目,所以我需要重新configurationGoogletesting从64位。 用旧的1.7.0版本知道解决scheme是这样的: autoreconf -fvi ./configure –build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" make 这是我现在使用新版本的方法: cd home/CWD/googletest/googlemock autoreconf -fvi ./configure –build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" cd home/CWD/googletest/googletest autoreconf -fvi ./configure –build=i686-pc-linux-gnu "CFLAGS=-m32" "CXXFLAGS=-m32" "LDFLAGS=-m32" cd .. mkdir googletest_build cd googletest_build cmake -DCMAKE_INSTALL_PREFIX:PATH=/home/me/googletest ../googletest make make install 这是否是因为我找不到其他地方的configuration文件,除了terminal中显示的结果与1.7.0版本的重新configuration相同。 但使用后: make UTEST=yes project_Name 我得到这个: Linking… project_Name GTEST_LDFLAGS=-L ../../googletest//lib/ -lpthread -lgtest -lgtest_main […]

用日志中的主机名replaceIP

我正在寻找一个bash脚本来读取日志并用主机名replaceIP地址。 有没有人有任何想法如何做到这一点?

在linux下访问堆栈下的内存

该程序访问堆栈下的内存。 我会假设得到一个段错误,或者只是当我走出堆栈界限,但我看到实际的数据。 (这是假设100KB以下的堆栈指针超出了堆栈边界) 还是系统实际上让我看到堆栈下面的内存? 是不是应该有内核级别的保护措施,还是只适用于分配的内存? 编辑: 1024*127下面的字符指针它随机段错误或运行,所以堆栈似乎不是一个固定的8MB,似乎也有一点随机了。 #include <stdio.h> int main(){ char * x; int a; for( x = (char *)&x-1024*127; x<(char *)(&x+1); x++){ a = *x & 0xFF; printf("%p = 0x%02x\n",x,a); } } 编辑:另一个奇怪的事情。 第一个程序segfaults只有1024*127但如果我printf向下远离堆栈我没有得到一个segfault和所有的内存似乎是空的(全0x00 ): #include <stdio.h> int main(){ char * x; int a; for( x = (char *)(&x); x>(char *)&x-1024*1024; x–){ a […]

在terminal使用curl“if”语句?

我正在使用这个命令来获取使用curl的页面的响应代码: curl -s -o /dev/null -w "%{http_code}" 'https://www.example.com' 如果响应代码是200 ,那么我想删除我的电脑上的某个文件。 如果不是200 ,就不应该做任何事情。 什么是最简单的方法来做到这一点?

清空文件是不是在寻找工作

我想清空超过30 MB大小的文件。 我试图用find命令来解决这个问题。 find . -maxdepth 1 -size +32M -exec cat /dev/null > {} \; 和 find . -maxdepth 1 -size +32M -exec echo -n > '{}' \; 但是这两个命令都不会清空文件。而是创build一个文件。 为什么它不清空文件? 为什么它会创build一个名为{} ?的文件。 find命令有什么问题?

redirect之后的一个参数能做什么吗?

redirect被忽略之后是否有任何争论,还是会有意想不到的后果? 我很惊讶地发现,我在bash脚本中犯的一个错字没有任何区别,因为它是在redirect之后指定的。 比如我预料它会抱怨这样的事情 ./foo.sh > foo2.log whoops I made a typo 但它不会抛出任何错误。 我不得不添加一个分号来让它像命令和错误一样运行 ./foo.sh > foo2.log; whoops I made a typo 更令我吃惊的是,linuxredirect后并没有放弃,比如说 ./foo.sh > foo2.log whoops I made a typo > command_is_still_going.log 是绝对好的,command_is_still_going.log仍然被创build “哎呀,我犯了一个错字”的说法完全被忽略了,还是会导致一些不必要的行为? 因为我倾向于使用这个很多。

readlink systemcall做什么?

我无法理解Linux中“ readlink ”系统调用的操作。 任何人都可以用简单的例子来解释它吗?

如何检查串口是否已经打开(通过另一个进程)在Linux中,使用Python 2.7(可能pyserial)?

我知道还有其他问题与我的很相似,但是他们都没有解决我遇到的问题。 我想使用pyserial来访问一个串行端口( /dev/tty… ),但只有在另一个进程尚未打开的情况下。 以下片段在运行一次后会在我的Ubuntu 12.04机器上返回四个可用的端口。 如果我第二次运行它,我预计没有端口可用。 可悲的是,返回相同的端口列表。 看来pyserial不能确定另一个进程已经打开了这个端口。 我期望一个SerialException抛出,或isOpen()方法返回False,但pyserial乐意打开多次。 import serial from serial import tools from serial.tools import list_ports def available_ttys(): for tty in serial.tools.list_ports.comports(): try: port = serial.Serial(port=tty[0]) if port.isOpen(): yield port except serial.SerialException as ex: print 'Port {0} is unavailable: {1}'.format(tty, ex) def main(): ttys = [] for tty in available_ttys(): ttys.append(tty) […]

如何避免不能使用命名空间std; 在C ++中

我在尝试将我的C ++源代码从HP-UX移植到Linux时遇到了此问题。 当我尝试在Linux上编译C ++源代码时,会发生什么,它抱怨组件(来自标准C ++库)不存在。 放置行使用名称空间标准; 在源代码的顶部似乎解决了这个问题。 当我尝试重新编译HP-UX上的代码时,aCC编译器会抱怨只有命名空间名称在这里有效(它不认为是有效的命名空间)。 我想知道是否有办法解决这个问题,以便源代码与HP-UX的长期弃用的C ++编译器和LINUX的GCC编译器二进制兼容。

如何安装Perl脚本的依赖关系?

我试图执行一个在Perl上运行的守护进程,并且该文件被称为ffencoderd.pl 。 每次运行时,都会指出文件丢失,例如Can't Locate IO/Scalar.pm 。 所以我去CPAN.orgfind这个文件并安装它。 唯一的问题是我刚刚安装了6个文件,我担心可能会有20个以上的文件。 而不是继续运行ffencoderd.pl并发现我需要安装另一个文件,我想知道是否有更新perl 。 这些文件是否在正确安装的Perl中是标准的? EX: Config-General-2.50 , Pod-Xhtml-1.61 , libxml-enno-1.02等