Articles of Linux操作系统

在gcc中有作为内置macros的非保留标识符的原因是什么?

今天我偶然发现了一个相当有趣的编译器错误: int main() { int const unix = 0; // error-line return unix; } 给gcc 4.3.2(是的,古老的)以下消息: error: expected unqualified-id before numeric constant 这绝对是相当混乱。 幸运的是,铿锵声(3.0)是一个更有帮助(像往常一样): error: expected unqualified-id int const unix = 0 ^ <built-in>:127:14: note: expanded from: #define unix 1 ^ 我当然没有想到unix ,它既不是大写字母,也不是从下划线开始,成为一个macros,特别是一个内置macros。 我检查了gcc中的预定义macros,并且有2个(在我的平台上)使用“非保留”符号: $ g++ -E -dM – < /dev/null | grep -v _ […]

通过链接两个相同的库来解决循环依赖关系?

我们有一个代码库分解成静态库。 不幸的是,图书馆有循环依赖; 例如, libfoo.a依赖于libbar.a ,反之亦然。 我知道处理这个“正确”的方法是使用链接器的–start-group和–end-group选项,如下所示: g++ -o myApp -Wl,–start-group -lfoo -lbar -Wl,–end-group 但是在我们现有的Makefiles中,这个问题通常是这样处理的: g++ -o myApp -lfoo -lbar -lfoo (想象一下,这扩展到了20个具有复杂相关性的库。) 我已经经历了我们的Makefiles把第二种forms改为第一种,但是现在我的同事们在问我为什么…而除了“因为它更干净”和模糊的感觉,其他forms是有风险的,所以我没有有一个很好的答案。 那么,多次链接同一个库会产生一个问题? 例如,如果相同的.o被拉两次,链接是否会失败并带有多重定义的符号? 还是有任何风险,我们可以结束两个相同的静态对象的副本,创造微妙的错误? 基本上,我想知道链接时间或运行时间失败的可能性多次链接同一个库。 如果是的话,如何触发它们。 谢谢。

我如何计算bashvariables中的字符数量

我如何计算bashvariables中的所有字符? 所以例如,如果我有 "stackoverflow" 结果会是 "13" 我search了谷歌,但到目前为止只能找出如何计算特定字符(例如说字母“a”), 谢谢你的帮助!

在linux下编译leveldb c ++程序错误?

我已经安装leveldb在我的主目录~/local 。 [~/temp/leveldb-1.15.0] $ make [~/temp/leveldb-1.15.0] $ cp -av libleveldb.* $HOME/local/lib/ [~/temp/leveldb-1.15.0] $ cp -av include/leveldb $HOME/local/include/ 我的c ++程序是这样的: #include <assert.h> #include <iostream> #include "leveldb/db.h" using namespace std; int main(int argc,char * argv[]) { leveldb::DB* db; leveldb::Options options; options.create_if_missing = true; std::string dbpath = "tdb"; leveldb::Status status = leveldb::DB::Open(options, dbpath, &db); assert(status.ok()); std::string key1 = […]

将CSV中的第三个字段与GNU Linux(AWK / SED / GREP)中的模式文件进行匹配

当第三个字段与模式文件中的模式匹配时,我需要在CSV文件中打印所有行。 我已经尝试grep没有运气,因为它与任何领域不仅匹配第三。 grep -f FILE2 FILE1 > OUTPUT FILE1 dasdas,0,00567,1,lkjiou,85249 sadsad,1,52874,0,lkjiou,00567 asdasd,0,85249,1,lkjiou,52874 dasdas,1,48555,0,gfdkjh,06793 sadsad,0,98745,1,gfdkjh,45346 asdasd,1,56321,0,gfdkjh,47832 FILE2 00567 98745 45486 54543 48349 96349 56485 19615 56496 39493 正确的输出 dasdas,0,00567,1,lkjiou,85249 sadsad,0,98745,1,gfdkjh,45346 错误的输出 dasdas,0,00567,1,lkjiou,85249 sadsad,1,52874,0,lkjiou,00567 <—- I don't want this to appear sadsad,0,98745,1,gfdkjh,45346 我已经到处search,尝试不同的公式。 编辑:感谢Wintermute,我设法写这样的事情: csvquote file1.csv > file1.csv awk -F '"' 'FNR == NR { patterns[$0] = […]

Sendmail / procmail – 获取邮件发件人和邮件主题,utf8编码问题

我的.procmailrc(真的很简单): :0c | $HOME/send_sms.sh "`formail -xFrom:`" "`formail -xSubject:`" 因此,名为“mail@domain.com”的发件人发送邮件的主题是“Subject testąść”。 脚本“send_sms.sh”收到: 发件人:=? =?UTF-8?Q?mail@domain.com?= <mail@domain.com> Subject: =?UTF-8?Q?Subject_test_=C4=85=C5=9B=C4=87?= 我应该如何修改我的.procmailrc以获得明文? 或者在我的脚本send_sms.sh中转换这个?

将域映射到Tomcat应用程序

我有一台安装了CentOS和zpanel的服务器。 Zpanel沿许多其他模块安装了“Apache Httpd”。 我一直托pipe多个域没有任何问题。 我有两个问题: 移除端口8080并将所有呼叫指向80。 每个tomcat应用程序的适当的域,以及我现有的网站在Apache Http上独立运行。 我安装了Apache Tomcat 8并部署了多个应用程序,我可以像访问我的应用程序 http://example:8080/app1 http://example:8080/app2 http://example:8080/app3 我想要的是我的tomcat应用程序映射到我的域名,如此 http://example:8080/app1 => http://www.app1.com http://example:8080/app2 => http://www.app2.com http://example:8080/app3 => http://www.app3.com 我曾经尝试过这个教程 ,它有一些技巧,但不完全是我想要的。 即在执行他提到的步骤后,我打开我的example.comredirect到我的tomcat应用程序,如:example.com/app1。 [它删除了8080,并redirect到正确的应用程序]但如果从最后的应用程序被改变,即app1被更改为其他项目,由tomcat托pipe那么该项目打开。 编辑: 我的虚拟主机文件是 # DOMAIN: app1.com <virtualhost *:80> ServerName app1.com ServerAlias app1.com www.app1.com RewriteEngine On RewriteRule ^/$ app1/ [R=301] <Proxy *> Order allow,deny Allow from all </Proxy> ProxyRequests […]

如何获得Linux中的C / C + +的内存访问types

可能重复: 有没有比parsing/ proc / self / maps找出内存保护更好的方法? 我有一个指针,我想检查引用的内存是否可读,可写和/或可执行。 我怎样才能做到这一点?

Bash printf前缀

在Bash中,我可以使用printf来格式化一个string输出,如下所示: – (注意我为string添加了一个后缀W ,这不包括在填充中) $ printf "Blah %11.1fW\n" 123 456 78965 5 56 Blah 123.0W Blah 456.0W Blah 78965.0W Blah 5.0W Blah 56.0W 如果我想在string前缀,我可以这样做: – $ printf "Blah £%11.1f\n" 123 456 78965 5 56 Blah £ 123.0 Blah £ 456.0 Blah £ 78965.0 Blah £ 5.0 Blah £ 56.0 但是请注意,这是如何在前缀之前应用填充的。 如何(如果可能的话)我会使用printf来填充前的值,所以输出如下: – Blah £ 123.0 […]

启用PyROOT Ubuntu 14.04

我下载madpgraph5 ,但是当我运行它时,我得到以下错误: ERROR: ROOT file called 'ROOT.py' or 'ROOT.pyc' is not found ERROR: Please check that ROOT is properly installed. 当我尝试locate ROOT.py并locate ROOT.pyc ,我什么也得不到。 我已经安装了root 5.34 ,并且运行顺利。 我也有Python 2.7.6安装。 我下载了rootpy ,但不知道如何包含和启用PyROOT 。 我search了一下,我想我必须编辑一些与bashrc中的path有关的事情,但在我做之前,我需要确定我在做什么。 谁能帮忙?