小编Ric*_*ard的帖子

crti.o文件丢失

我正在使用GNU工具链构建一个项目,一切正常,直到我链接它,链接器抱怨它丢失/无法找到crti.o.这不是我的目标文件之一,它似乎与libc有关但我无法理解为什么它需要这个crti.o,它不会使用库文件,例如libc.a

我正在为手臂平台进行交叉编译.我在工具链中有该文件,但如何让链接器包含它?

crti.o在一个'库'搜索路径上,但是它应该.o在库路径上查找文件吗?

在搜索路径同样为gccld

linker makefile

24
推荐指数
3
解决办法
5万
查看次数

减少可执行文件大小的过程

我正在生成一个在ARM处理器上运行的hex文件,我想保持在32K以下.它目前比这大得多,我想知道是否有人可能会对减肥的最佳方法有什么建议?

这是我到目前为止所做的

  1. 所以我在它上面运行'size'来确定hex文件有多大.
  2. 然后'size'再次查看每个目标文件有多大,该链接用于创建十六进制文件.似乎大多数大小来自外部库.
  3. 然后我使用'readelf'来查看哪些函数占用了大部分内存.
  4. 我搜索了代码,看看是否可以消除对这些函数的调用.

这是我卡住的地方,有一些我不直接调用的函数(例如_vfprintf),我找不到调用它的所以我可以删除调用(因为我认为我不需要它).

那么接下来的步骤是什么?

回答答案:

  • 正如我所看到的,有些函数被调用占用大量内存.然而,我无法找到所谓的内容.
  • 我想省略那些功能(如果可能的话),但我找不到它们的名字!我想可以从任意数量的库函数调用.
  • 链接器正在按需工作,我认为它只包含相关的库文件.您如何知道是否仅包含相关功能?你可以为此设置旗帜吗?
  • 我正在使用GCC

embedded arm

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

ELF文件头

关于elf文件头的快速问题,我似乎无法找到有关如何在elf头中添加/更改字段的任何有用信息.我希望能够更改幻数并在标题中添加构建日期,以及其他一些内容.

据我所知,链接器创建头信息,但我没有在LD脚本中看到任何引用它的内容(虽然我是ld脚本的新手).

我正在使用gcc并为ARM构建.

谢谢!

更新:

  • 好吧也许我的第一个问题应该是:是否可以在链接时创建/编辑头文件?

unix linux embedded

10
推荐指数
2
解决办法
8935
查看次数

链接器问题 - 未定义的引用

我的编译器有一个问题,告诉我有一个'未定义的引用'我要在库中使用的函数.让我分享一下这个问题的一些信息:

  • 我正在用gcc交叉编译C语言.
  • 我正在调用一个库函数,该函数可以通过包含头文件来访问,该头文件包含另一个包含原型的头文件.
  • 我已经使用-I包含了头文件目录,我确信它已被找到.
  • 我首先创建.o文件,然后在单独的命令中链接它们.

所以我的想法是它可能是我包含库文件的顺序,但我不确定订购它们的正确方法是什么.我尝试在.o文件之前和之后包含headers文件夹.

一些建议会很好,也许可以解释链接器如何做它的事情.

谢谢!


回答答案

  • 没有.a库文件,库中只有.h和.c,所以-l不合适
  • 我对库文件的理解是它只是头文件和源文件的集合,但也许它是从源创建的.o文件的集合?!
  • 没有创建库对象文件,也许应该有?是的,似乎我不明白包含和库之间的区别...我将继续努力:-)

感谢所有的回复!我学到很多关于图书馆的知识.我想把所有答案都作为公认的答案:-)

linker gcc

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

从非托管代码传递指针

我有一个导入C dll的C#项目,dll有这个功能:

int primary_read_serial(int handle, int *return_code, int *serial, int length);
Run Code Online (Sandbox Code Playgroud)

我想访问serial参数.我实际上已经让它返回串行参数的一个字符,但我不确定我在做什么,并且想要了解发生了什么,当然让它工作.

所以,我非常确定正在访问dll,没有指针的其他函数工作正常.我该如何处理指针?我必须编组吗?也许我必须有一个固定的地方来放置数据吗?

解释会很棒.

谢谢!理查德

c# interop dllimport

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

在STM32闪存中运行多个应用程序

我想在我的STM32闪存中有两个应用程序,一个基本上是启动,另一个是'主'应用程序.我已经想出如何将它们中的每一个加载到闪存的不同区域,并且在获取内存转储后,所有内容看起来都在正确的位置.

因此,当我进行重置时,它会加载引导,此时所有引导都会跳转到应用程序.调试启动,这一切似乎都正常工作.但是,在我跳转到应用程序之后问题到了,它只执行一条指令(汇编),然后跳回到启动.它应该无限期地留在应用程序中.

我的问题是,我应该在应用程序中"跳转"到哪里?

似乎有一些潜在的点,例如中断向量,重置处理程序,应用程序的主要功能.其实我已经尝试了所有这些没有成功的人.

希望这是有道理的,如果没有,我会更新问题.

谢谢你的帮助!理查德

更新:

  • 我在调试器中玩了一个游戏并手动将程序计数器更改为应用程序的主要部分,这很有效,所以它让我觉得我的跳转有问题,为什么程序计数器不能继续运行跳后?
  • 实际上它似乎是PSR,'T'在跳转时被重置,如果我在跳转之后再次设置它继续使用app我想要的
  • 好的找到了一个解决方案,似乎你需要在执行分支时将PC LSB设置为1或者它处于'ARM'模式(32位指令而不是像'拇指'模式中的16位指令.相当一个模糊的小问题,谢谢你让我和你分享!

embedded stm32

5
推荐指数
1
解决办法
5974
查看次数

如何实施内容安全策略?

有一些很好的文章解释了 CSP 的选项,就像这样:http : //www.html5rocks.com/en/tutorials/security/content-security-policy/

也许这是完全显而易见的,因为我找不到任何好的例子,但是您如何在实践中实际实施 CSP?

在 PHP 中,您可以在您服务的页面上设置标题,但是如果您只有一个 HTML 文件呢?您是否必须通过您的网络服务器、apache 或类似服务器来完成?这似乎不是一个简单的方法。

这里的最佳做法是什么?服务的每个单独页面都应该手动设置标题吗?

谢谢!

php security content-security-policy

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

控制appcache下载

我开发了一个使用appcache的iPad网络应用程序.它不是一个完全离线的应用程序,但我使用appcache存储大型图像文件,以便它们不通过3G发送.问题是当清单更新时,appcache会更新iPad是否在wifi或3G上,这可能很昂贵.

是否可以让用户决定是否可以更新appcache?从我所看到的,这是不可能的,这一切都是自动发生的,你只是得到了事件.但也许有一些诡计就像在飞行中或类似地写清单.

如果有帮助,在服务器端使用PHP.谢谢.

html5 html5-appcache ios6

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

简单的反馈控制资源/示例

我想实现想要我认为是一个相当标准的反馈循环,但是自从我看了控制理论并且我无法理解概念和找到实现示例以来已经很多年了.我希望有人可以用简单的术语解释发生了什么,并且可能指出我可以用来实现解决方案的一些资源.我在这个主题上看到的所有信息通常都淹没在数学中.

所以这就是我想要实现的目标:

  • 我想控制一个电子电路的电流,比如我总是希望它能画出0.75A.
  • 当然,电流随着时间的推移而变化,这取决于电路的其他部分正在做什么.但我有一些硬件可以通过传递给DAC的电压电平来控制或多或少的电流.
  • 我还有一个ADC,它给我一个电压,该电压与系统吸收的电流成正比.

我需要在一些阈值内处理斜坡和振荡.我也在C工作.

谢谢,理查德

embedded electronics

-1
推荐指数
1
解决办法
1296
查看次数