gnu gcc 如何抑制警告:'typedef'在此声明中被忽略 [默认启用]
我在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
4 2023-11-27
编程技术问答社区
include_next预处理器指令在MSVC中引起问题
我知道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也很好.为此,我将
0 2023-11-23
编程技术问答社区
如何在Visual studio 2008中设置GNU G++编译器
如何将视觉工作室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
0 2023-11-23
编程技术问答社区
/show include equivalent option in g++
我看到VC ++包含一个名为/Show的选项,包括列出您每个翻译单元中Include文件的层次结构.这似乎是一个非常有用的选择 - 优化/改善大型项目中的汇编时间. 问题 GNU G ++编译器中是否有任何等效选项以获取这些(相似的输出)? 解决方案 有多种控制选择的选项. -MD将列出文件,-mmd将列出非系统文件作为汇编的副作用 -m,-mm将生成列表而不是编译. -MQ,-MG,-MP和-MT生成Makefile目标片段. -MF允许您指定输出文件名. 其他解决方案 gcc -H 将在使用时打印标题文件的名称.
0 2023-11-20
编程技术问答社区
C++ -fvisibility=hidden -fvisibility-inlines-hidden
我有一个有关C ++可见性属性的问题.我读过了解其工作原理. 我希望使用可见性隐藏在我拥有的一些共享库上.我相信这意味着符号被隐藏了吗? 您是如何链接共享库的?有特殊的方法吗?如果我将其链接起来通常如何链接它不起作用. 有人可以帮我. 解决方案 -fvisibility=hidden使您的所有符号隐藏默认情况下. 您要做的是选择要与库链接到库的用户可见的功能,并通过用可见的属性标记它们可见. ,例如 void __attribute__((visibility("default"))) Exported() { // ... } 其他解决方案 它减少了私人的存储不必要的符号信息. 考虑一个共享对象,该对象具有10,000多个符号(函数/全局变量),但只有100个符号是库用户可以访问的公共功能.我们可以使他人只有100个功能对他人可见,其余的9,900个符号应保持私密. 它也可用于减少共享对象的大小,因为其重置表只有10
0 2023-11-20
编程技术问答社区
windows上gnu make的libintl3和libiconv2在哪里,需要在MinGW上用ruby编译vim。
我试图为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:
10 2023-11-19
编程技术问答社区
如何更好地编译 gnu.mail.providers?
我对分叉 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
0 2023-11-18
编程技术问答社区
在相关文件(文档)中为新发布的版本号进行跳转
我有兴趣了解您如何处理新版本问题的版本号. 您如何处理相关文件中的版本号,例如人页等 该软件是使用GNU工具链构建的,因此可以使用AutoConf,Automake等,并用于应用程序的版本编号.这样的信息就可以重复使用. git用作VCS. 一种可能性是在makefile.am中引入 extry,new 目标,它可以在所有相关文件中替换sed/awk来替换版本编号和日期.该目标可以在开发新版本的开头(分支后)一次. 然后,当人们会在项目的 git克隆中或完成释放tarball时,该项目可以使用正确的信息构建.当然,必须记住在开始开发新版本时运行此目标目标. 另一个选择是用钩子的钩子进行SED/尴尬替换.但是,这将使项目的GIT存储库处于状态不正确的版本号与关联文件相关联. 我更喜欢执行第一个解决方案,因为它还记录了GIT历史记录中的正确版本号. 进行SED/AWK替换时,您喜欢"在文件中"或使用模板中使用Autoconf/Automake工
6 2023-11-18
编程技术问答社区
什么是gnu make中的$(-*-command-variables-*-))
在我的项目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. 谁能告诉我这些变量在这些变量中定义
2 2023-11-13
编程技术问答社区
如何检查awk变量的类型?
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;
2 2023-11-13
编程技术问答社区
如何在字符串上循环并移除字符串数组
我有以下代码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
4 2023-11-08
编程技术问答社区
在Mac OS X 10.10.5 Yosemite上Binutils构建失败
下载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
4 2023-11-08
编程技术问答社区
GLOB_BRACE的可移植性?
在这个问题 glob()'s GLOB_BRACE选项,搜索文件时允许一组有限的正则表达式. 这看起来像我需要的东西,但是根据手册,GLOB_BRACE"在某些非GNU操作系统上不可用".其中似乎是Solaris. 我正在构建一个应该尽可能便携的应用程序,因此我需要尽早查看可能的问题. 除了不支持GLOB_BRACE的Solaris外,有人知道其他平台吗?例如,mac os> = x怎么样?它建在Unix之上.每个Unix是否自动是手册中定义的" GNU"平台? 解决方案 检查相关 glob(3)男人页对于 *nix变体将告诉您它是否支持GLOB_BRACE.
2 2023-11-08
编程技术问答社区
如何建立具有类似名称的多个目标?
所以我的问题与下面的问题完全相同,但是没有人回答. 模式与多个可执行性目标匹配的模式匹配的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 $
4 2023-11-08
编程技术问答社区
如何自动生成Makefile的帮助命令
我最近发现本文在线上说明如何设置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 #
0 2023-11-08
编程技术问答社区
无法构建GNU automake
使用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
8 2023-11-08
编程技术问答社区
如何使用Unix连接获取外部连接中的所有字段?
假设我有两个文件,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,
0 2023-11-08
编程技术问答社区
Gnu Makefile-处理依赖关系
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) $(
0 2023-11-08
编程技术问答社区
grep是如何工作的?
我试图了解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
0 2023-11-08
编程技术问答社区
巴什数组和负下标,是或不是?
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}
0 2023-11-08
编程技术问答社区