标签: gnu

g ++既是c ++编译器又是链接器?

我正在查看Eclipse中构建的输出.我正在为ColdFire处理器进行交叉编译.编译行看起来像这样:

m68k-elf-g++ -O2 -falign-functions=4 -IC:\nburn\include -IC:\nburn\MOD52...
Run Code Online (Sandbox Code Playgroud)

接着是更多的包含文件,明显的"编译器"标志,最后是我改变的一个源文件.下一行再次调用相同的工具:

m68k-elf-g++ src\main.o src\TouchPanelMediator.o src\Startup.o....
Run Code Online (Sandbox Code Playgroud)

接着是更多的.o文件,一些.ld文件和一些.a文件.这似乎是将所有各种类型的目标文件链接在一起.

在Gnu家族中,g ++是一些超级应用程序,可以根据参数确定是否需要编译或链接?它是否具有内置的功能,或者它只是调度编译到gcc并链接到ld而我的日志只是没有显示?

c++ gcc gnu g++ ld

18
推荐指数
2
解决办法
1万
查看次数

如何在shell脚本中检测BSD与GNU版本的日期

我正在编写一个需要进行日期字符串操作的shell脚本.该脚本应尽可能多地使用*nix变体,因此我需要处理机器可能具有BSD或GNU版本的日期的情况.

测试操作系统类型最优雅的方法是什么,所以我可以发送正确的日期标志?

编辑: 为了澄清,我的目标是使用日期的相对日期计算工具,这些工具在BSD和GNU中看起来很明显.

BSD的例子

date -v -1d
Run Code Online (Sandbox Code Playgroud)

GNU示例

date --date="1 day ago"
Run Code Online (Sandbox Code Playgroud)

shell bsd gnu date

18
推荐指数
2
解决办法
3825
查看次数

-msse,-msse2,-mssse3,-msse4 rtc的cflgs sse选项有什么不同?以及如何确定?

对于GCC CFLAGS选项:-msse,-msse2,-mssse3,-msse4,-msse4.1,-msse4.2.它们是独家使用还是可以一起使用?

我的理解是,选择要设置的位置取决于程序将运行的目标拱,是否支持,这是正确的吗?

如果是这样,我怎么知道我的目标拱支持什么?在Linux中,我是cat/proc/cpuinfo,但是如果是mac还是Windows呢?

谢谢!

gcc sse gnu g++ compiler-flags

18
推荐指数
1
解决办法
2万
查看次数

如何解释ldd程序的输出?

[root@wdctc1281 bin]#  ldd node
        linux-vdso.so.1 =>  (0x00007fffd33f2000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f70f7855000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f70f764d000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f70f7345000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f70f7043000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f70f6e2d000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f70f6c10000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f70f684f000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f70f7a61000)
Run Code Online (Sandbox Code Playgroud)

第一行和最后一行是什么意思?它们看起来不像正常

xxxx.so => /lib64/xxxxx.so (0xxxxxxxxxxxxxxxxxxxx)
Run Code Online (Sandbox Code Playgroud)

格式.

linux gnu binutils ldd

18
推荐指数
2
解决办法
4935
查看次数

用于Bash/Sh等Shell脚本的IDE/Emacs模式

我将Emacs用于shell脚本.我知道我在某处阅读了一些模式,以便更容易(代码完成,自动完成,括号匹配,语法高位,检查语法)在Emacs上编写Shell脚本但无法找到它.简而言之,我想将Emacs变成一个Bash IDE.

另外,还有其他工具/ IDE可以让GNU/Linux Shell上的脚本更容易吗?

linux emacs bash scripting gnu

17
推荐指数
1
解决办法
1万
查看次数

C++ -fvisibility = hidden -fvisibility-inlines-hidden

我有一个关于C++可见性属性的问题.我已经阅读了http://gcc.gnu.org/wiki/Visibility,但我不太明白它是如何工作的.

我希望在我的一些共享库中隐藏可见性.我相信这意味着符号被隐藏了吗?

你打算如何链接共享库呢?有特殊的方式吗?如果我链接它通常如何链接它不起作用.

有谁可以帮助我吗.

c++ linux visibility gnu dynamic-linking

17
推荐指数
2
解决办法
2万
查看次数

什么是'[my] system'提供的正则表达式库?

GNU的less实用程序的手册页说明了以下关于搜索:

/pattern
    Search forward in the file for the N-th line containing the pattern.  N
    defaults to 1.  The pattern is a regular expression, as recognized by the
    regular expression library supplied by your system.
Run Code Online (Sandbox Code Playgroud)

我在各种系统上使用较少:我的个人Ubuntu笔记本电脑,我的CentOS云服务器,在Cygwin下工作等等.我一直想做负面预测和其他花哨的东西,但我不知道什么是正则表达式要使用的语法.我怎么知道的?

regex linux gnu

17
推荐指数
2
解决办法
1250
查看次数

为什么告知"中止"是违法的?

函数GNU libc文档abort包含以下通知:

未来变更警告:建议的联邦审查规定可能禁止我们向您提供有关调用此功能的可能性的信息.我们需要说这不是终止程序的可接受方式.

呃,什么?

我找到了一个七岁的Reddit讨论这个问题.看来该通知是由Richard Stallman在1995年提出的 - 所以它已经存在了一段时间.然而,除了1999年的邮件列表线程声称这是一个笑话,我找不到任何进一步的信息.

那么:这只是一个由rms投入的复活节彩蛋吗?或者它是否严重(虽然可能不再相关)?如果是这样,它指的是什么?

相同功能的Open Group POSIX文档不包含任何类似的内容,也没有我查阅的任何手册页.

c gnu libc code-documentation

17
推荐指数
1
解决办法
1354
查看次数

是否有任何好的工具来检查Makefile?

大型复杂的make文件可能令人生畏,无法阅读和检查.哪些工具可用于可视化或以其他方式检查gnu make文件?

visualization gnu makefile

16
推荐指数
2
解决办法
4151
查看次数

未配置时STM32 WWDG中断触发

由于许可证问题,我有一个应用程序,我从Keil IDE移植到使用GNU工具链构建.我已经成功地能够在设备上设置,构建,刷新和运行应用程序.

GNU端的应用程序由于某种原因被卡在WWDG的弱链接IRQ处理程序中,这是一个无限循环.应用程序未启用WWDG,默认情况下在重置时禁用.我还验证了配置寄存器的默认启动值.

除编译器之外,唯一的区别是链接器和启动文件.但是,两个工具链使用的启动文件和链接器文件都是STM生成的默认值.

知道可能导致这种情况的原因吗?我在这里结束了我的智慧.

使用stm32f103XX,让我知道是否有任何其他信息会有所帮助.

编辑:使用下面的评论,我能够确定它实际上是正在被触发的HardFault_Handler.如果可能有帮助,我已经在下面包含了回溯输出

GDB BT:

0 HardFault_Handler()

1(信号处理程序调用)

2 0x720a3de在?? ()

3 foo(0x80005534)

Backtrace已停止:前一帧与此帧相同(损坏的堆栈?)

2件事对我来说很突出,虽然我没有gdb专家.1)foo不是一个函数,它是一个const数组的字符和2)0x0720a3de不是一个有效的内存地址,闪存地址范围从0x08000000开始

embedded arm gnu cortex-m3 stm32

16
推荐指数
4
解决办法
1万
查看次数