我正在查看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而我的日志只是没有显示?
我正在编写一个需要进行日期字符串操作的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) 对于GCC CFLAGS选项:-msse,-msse2,-mssse3,-msse4,-msse4.1,-msse4.2.它们是独家使用还是可以一起使用?
我的理解是,选择要设置的位置取决于程序将运行的目标拱,是否支持,这是正确的吗?
如果是这样,我怎么知道我的目标拱支持什么?在Linux中,我是cat/proc/cpuinfo,但是如果是mac还是Windows呢?
谢谢!
[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)
格式.
我将Emacs用于shell脚本.我知道我在某处阅读了一些模式,以便更容易(代码完成,自动完成,括号匹配,语法高位,检查语法)在Emacs上编写Shell脚本但无法找到它.简而言之,我想将Emacs变成一个Bash IDE.
另外,还有其他工具/ IDE可以让GNU/Linux Shell上的脚本更容易吗?
我有一个关于C++可见性属性的问题.我已经阅读了http://gcc.gnu.org/wiki/Visibility,但我不太明白它是如何工作的.
我希望在我的一些共享库中隐藏可见性.我相信这意味着符号被隐藏了吗?
你打算如何链接共享库呢?有特殊的方式吗?如果我链接它通常如何链接它不起作用.
有谁可以帮助我吗.
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下工作等等.我一直想做负面预测和其他花哨的东西,但我不知道什么是正则表达式要使用的语法.我怎么知道的?
该函数的GNU libc文档abort包含以下通知:
未来变更警告:建议的联邦审查规定可能禁止我们向您提供有关调用此功能的可能性的信息.我们需要说这不是终止程序的可接受方式.
呃,什么?
我找到了一个七岁的Reddit讨论这个问题.看来该通知是由Richard Stallman在1995年提出的 - 所以它已经存在了一段时间.然而,除了1999年的邮件列表线程声称这是一个笑话,我找不到任何进一步的信息.
那么:这只是一个由rms投入的复活节彩蛋吗?或者它是否严重(虽然可能不再相关)?如果是这样,它指的是什么?
相同功能的Open Group POSIX文档不包含任何类似的内容,也没有我查阅的任何手册页.
大型复杂的make文件可能令人生畏,无法阅读和检查.哪些工具可用于可视化或以其他方式检查gnu make文件?
由于许可证问题,我有一个应用程序,我从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开始