我在Fedora 16上使用GNU GCC 4.6.2.我正在使用第三方API编写申请,在编译后,我收到了很多警告. warning: ‘typedef’ was ignored in this declaration [enabled by default] 只是想知道如何抑制它?我用-wall标志编译程序. 在此文档中, gcc/parnning-options.html ,它提到了 - wunused-local-typedefs . 我尝试过 -wno unused-local-typedefs ,但行不通. 谢谢. 解决方案 -Wno-unused-local-typedefs在GCC 4.8中工作. 其他解决方案 GCC允许您指定某些库包含路径应将其视为 system 库的-isystem switch,-isystem switch允许这些标头相对于您在该上使用的标志的特殊处理其余的代码.因此,例如,如果您使用test.cpp
以下是关于 gnu 的编程技术问答
我知道inlcude_next恰好是C预处理器的GNU扩展. 我面临着使用MSVC编译GNU库代码的问题.例如,有一个stdio.h头文件或更确切地说GNU-like .当使用MS编译器编译时,我会得到invalid preprocessor command 'include_next',这很好,因为没有什么比Windows的#include_next指令.进行#include_next的主要目的是您要在项目中创建一个名为stdio.h的文件,而该文件将包括在内,而不是默认标题. 所以,我尝试了2个选项: 1)在所有文件中评论此行// #include_next . 2)或替换#include_next #include . 我不知道选择是否会引起任何问题(最后链接器错误). 关于2),我得到了fatal error C1014: too many include files : depth = 1024也很好.为此,我将
如何将视觉工作室2008编译器设置为GNU GCC.我还可以将其特定于项目吗?我没有找到任何结论性答案. 谢谢. 解决方案 您不能直接使用编译器. 但是,您可以调用makefile而不是使用内置构建系统. 配置示例: 安装mingw(我想已经完成了此步骤),包括mingw32-make 为mingw32-make创建一个称为MinGWMakefile的makefile,具有3个目标:clean,build和rebuild.如果您以前从未做过,这可能很乏味. 为您的项目创建新配置 转到配置属性 - >常规 - >配置类型,然后选择" makefile" 转到配置属性 - > nmake,然后使用以下命令行: Build Command Line: mingw32-make -f MinGWMakefile build ReBuild Command Line: mingw32-make -f MinGWMakefile rebuild Clean
我有一个有关C ++可见性属性的问题.我读过了解其工作原理. 我希望使用可见性隐藏在我拥有的一些共享库上.我相信这意味着符号被隐藏了吗? 您是如何链接共享库的?有特殊的方法吗?如果我将其链接起来通常如何链接它不起作用. 有人可以帮我. 解决方案 -fvisibility=hidden使您的所有符号隐藏默认情况下. 您要做的是选择要与库链接到库的用户可见的功能,并通过用可见的属性标记它们可见. ,例如 void __attribute__((visibility("default"))) Exported() { // ... } 其他解决方案 它减少了私人的存储不必要的符号信息. 考虑一个共享对象,该对象具有10,000多个符号(函数/全局变量),但只有100个符号是库用户可以访问的公共功能.我们可以使他人只有100个功能对他人可见,其余的9,900个符号应保持私密. 它也可用于减少共享对象的大小,因为其重置表只有10
我试图为Windows运行GNU,但由于找不到libint3.dll而不会运行. 肯定, a>指定libint3和libiconv2的需要,但是尝试遵循其链接显然会在服务器上产生错误. 所以,我需要这些库,我在哪里得到它们,或 我可以从其他地方下载GNU制作吗? 更多背景 这是我尝试做的事情,也许其他人可以分享一种方式完全不同的方法:我想编译vim并支持Ruby 1.8.7,以便我可以使用 http://code.google.com/p/vorax/ for vim的插件.我下载了mingw,gnumake,ruby 1.8.7和vimsources,并陷入困境,现在致电(vim's)makefile Make_ming.mak. 我添加了标签,因为也许 - 也许 - 其他人遇到了同一问题. 解决方案 sourceforge的gnuwin32页面您需要的依赖项: $ unzip -l make-3.81-dep.zip Archive:
我对分叉 GNU Javamail的当前稳定版本是1.1.2版,可用 在这里. 您还需要GNU JAF和GNU INETLIB的当前版本来构建 它. http://www.gnu.gnu.org/software/software/classpath/classpath/classpath/javamail/javamail/javamail/a/a/a > 确切地说,我需要下载以构建gnu.mail.providers吗?我当然可以很容易地检查代码,但是我不喜欢编译大部分API. (是的,不必多次编译大多数课程.) 1.)我需要下载什么罐? 2.)我需要结帐多少源代码? 3.)我可以立即将其检查到GitHub,因为许可样板在代码中? 解决方案 这是罐子: thufir@dur:~/NetBeansProjects/gnu_cvs/dist$ thufir@dur:~/NetBeansProjects/gnu_cvs/dist$ ll
我有兴趣了解您如何处理新版本问题的版本号. 您如何处理相关文件中的版本号,例如人页等 该软件是使用GNU工具链构建的,因此可以使用AutoConf,Automake等,并用于应用程序的版本编号.这样的信息就可以重复使用. git用作VCS. 一种可能性是在makefile.am中引入 extry,new 目标,它可以在所有相关文件中替换sed/awk来替换版本编号和日期.该目标可以在开发新版本的开头(分支后)一次. 然后,当人们会在项目的 git克隆中或完成释放tarball时,该项目可以使用正确的信息构建.当然,必须记住在开始开发新版本时运行此目标目标. 另一个选择是用钩子的钩子进行SED/尴尬替换.但是,这将使项目的GIT存储库处于状态不正确的版本号与关联文件相关联. 我更喜欢执行第一个解决方案,因为它还记录了GIT历史记录中的正确版本号. 进行SED/AWK替换时,您喜欢"在文件中"或使用模板中使用Autoconf/Automake工
在我的项目makefile中,有一个名为" - - command-variables - - "的变量.我可以从上下文中猜出它的含义,但是我想进一步了解" - - command-variables - - ". Google和GNU没有结果. 这是我的测试makefile, all: $(warning $(-*-command-variables-*-)) #$(warning $(.VARIABLES)) #$(foreach v, $(.VARIABLES), $(info $v===>$($v))) 当我键入make test=Makefile时,它会打印出来: Makefile:2: test=Makefile make: `all' is up to date. 我发现此变量在.variables变量中,但是我在GNU手册中找不到它. 我使用的Make的版本是GNU MAKE 3.81. 谁能告诉我这些变量在这些变量中定义
GAWK 4.2.0的Beta版本,可在 http:http:http:http:http:http://www.skeeve.com/gawk/gawk-4.1.65.tar.gz 是是一个主要版本,具有许多重要的新功能.. 我以前询问过 fs ="" gnu awk 4.2?的行为是什么全新的typeof()功能,可以弃用 isarray() : 从4.1.4变为4.2.0 新的typeof()函数可用于指示变量或数组元素是数组,regexp,string还是数字. isarray()函数被弃用以typeof(). 我可以介绍四种情况:字符串,数字,数组和未分配: $ awk 'BEGIN {print typeof("a")}' string $ awk 'BEGIN {print typeof(1)}' number $ awk 'BEGIN {print typeof(a[1])}' unassigned $ awk 'BEGIN {a[1]=1;
我有以下代码make文件从字符串的命令数组中获取 apps := $(shell fxt run apps) go: @for v in $(apps) ; do \ echo inside recipe loop with sh command: $$v ; \ done 命令返回数组,例如[app1 app2 appN](内部可能是许多应用程序) 但是我需要它是app1 app2 appN,任何想法如何删除数组[]? 当我跑步时,我得到以下 inside recipe loop with sh command: [app inside recipe loop with sh command: app2] 解决方案 您简单可以使用subst命令,带有空替换零件,以删除变量内容的部分: apps := $(shell ls) #add [] apps := [ $(apps) ] $(info Apps: $(app
下载GNU Binutils的包装后2.25 我遵循有关"安装binutils"的说明: ./cnofigure 使 构建后发生错误: ../../binutils-gdb/binutils/nm.c:1733:28: error: 'sbrk' is deprecated [-Werror,-Wdeprecated-declarations] char *lim = (char *) sbrk (0); /usr/include/unistd.h:582:7: note: 'sbrk' has been explicitly marked deprecated here void *sbrk(int); 1 error generated. make[4]: *** [nm.o] Error 1 make[3]: *** [all-recursive] Error 1 make[2]: *** [all] Error 2 make[1
所以我的问题与下面的问题完全相同,但是没有人回答. 模式与多个可执行性目标匹配的模式匹配的makefile 我正在尝试构建一系列的小测试文件,每个测试文件具有"测试*.c"的模式来测试我的库. 我想编写一个Makefile,一次为每个测试文件构建可执行文件(每个名称:test1,test2,test3..Etc.).但是,我不确定如何实现这一目标. 到目前为止,我拥有的是以下内容: SRC := $(shell find *.c) ALL_PROG := $(patsubst %.c, %, *.c) .PHONY: all all: $(ALL_PROG) $(ALL_PROG): $(SRC) -gcc $
我最近发现本文在线上说明如何设置make help目标,该目标将自动解析Makefile以获取注释并显示一个格式良好的帮助命令. 它解析: install: ## Install npm dependencies for the api, admin, and frontend apps @echo "Installing Node dependencies" @npm install install-dev: install ## Install dependencies and prepared development configuration @./node_modules/.bin/selenium-standalone install @cp -n ./config/development.js-dist ./config/development.js | true run-frontend-dev: webpack.PID #
使用wget http://ftp.gnu.org/gnu/automake/automake-1.15.tar.gz 安装自动制品 ./configure --prefix=$HOME/local对我来说很好. 在此步骤之后,我跑了make,并且失败了: GEN bin/automake GEN bin/aclocal GEN t/ax/shell-no-trail-bslash GEN t/ax/cc-no-c-o GEN runtest GEN lib/Automake/Config.pm GEN doc/aclocal-1.15.1 GEN doc/automake-1.15.1 help2man: can't get `--help' info from automake-1.15 Try `--no-discard-stderr' if option
假设我有两个文件,en.csv和sp.csv,每个文件完全包含两个逗号分隔的记录: en.csv: 1,dog,red,car 3,cat,white,boat sp.csv: 2,conejo,gris,tren 3,gato,blanco,bote 如果我执行 join -t, -a 1 -a 2 -e MISSING en.csv sp.csv 我得到的输出是: 1,dog,red,car 2,conejo,gris,tren 3,cat,white,boat,gato,blanco,bote 请注意,所有缺失的字段都已崩溃.要获得"正确"的完整外部连接,我需要指定格式;因此 join -t, -a 1 -a 2 -e MISSING -o 0,1.2,1.3,1.4,2.2,2.3,2.4 en.csv sp.csv 产生 1,dog,red,car,MISSING,MISSING,MISSING 2,MISSING,
UNIX平台上使用哪种方法来创建和管理makefiles? 我正在为我的项目使用手工制作件,但他们不处理标头文件更改和其他依赖项.我四处搜索,发现了一个很好的解决方案在这里. ,但我在sed命令中遇到了一个问题 - sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \ -e '/^$$/ d' -e 's/$$/ :/' > $*.P; \ 问题在于3rd Expression" -e's/*\ $$//'. 它行不通.它应该消除后斜线.我知道那里必须有双美元,因为这是Makefile的一部分.有人可以告诉我这里怎么了? 这是完整的makefile- CC=g++ CFLAGS=-g -Wall LIBS=-lpthread OBJS=file1.o file2.o TARGET=testProg $(TARGET) : $(OBJS) $(
我试图了解grep的工作方式. 当我说grep "hello" *.*时,grep是否获得2个参数 - (1)要搜索的字符串,即" Hello"和(2)路径*.*?还是外壳将*.*转换为grep可以理解的东西? 在哪里可以获得grep的源代码?我遇到了这个 gnu grep 链接.一个读书文件中的一个说明其不同于unix grep.如何这样? 我想查看grep的freeBSD版本以及它的linux版本(如果它们不同). 解决方案 外壳执行了球(从*形式转换为文件名).如果您有一个简单的C程序: ,您可以通过 #include int main(int argc, char **argv) { for(int i=1; i
gnu bash手册告诉我 如果分配了任何变量,则会自动创建索引数组 使用语法 name[subscript]=value 下标被视为必须 评估一个数字.如果下标评估的数字小于 零,用作比数组大的偏移 最大索引(-1的子标记是指该索引的最后一个元素 数组). 所以我想我会尝试一下并获得以下结果: $ muh=(1 4 'a' 'bleh' 2) $ echo $muh 1 $ echo ${muh[*]} 1 4 a bleh 2 # so far so good so now I'll try a negative ... $ echo ${muh[-1]} -bash: muh: bad array subscript # didn't go as planned! 我做错了什么,还是网站错误,还是GNU狂欢与我在CentOS下运行的狂欢有所不同?谢谢! 解决方案 如果您只想要最后一个元素 $ echo ${muh[*]: -1}