我正在使用GNU工具链构建一个项目,一切正常,直到我链接它,链接器抱怨它丢失/无法找到crti.o.这不是我的目标文件之一,它似乎与libc有关但我无法理解为什么它需要这个crti.o,它不会使用库文件,例如libc.a?
我正在为手臂平台进行交叉编译.我在工具链中有该文件,但如何让链接器包含它?
crti.o在一个'库'搜索路径上,但是它应该.o在库路径上查找文件吗?
在搜索路径同样为gcc和ld?
我正在生成一个在ARM处理器上运行的hex文件,我想保持在32K以下.它目前比这大得多,我想知道是否有人可能会对减肥的最佳方法有什么建议?
这是我到目前为止所做的
这是我卡住的地方,有一些我不直接调用的函数(例如_vfprintf),我找不到调用它的所以我可以删除调用(因为我认为我不需要它).
那么接下来的步骤是什么?
回答答案:
关于elf文件头的快速问题,我似乎无法找到有关如何在elf头中添加/更改字段的任何有用信息.我希望能够更改幻数并在标题中添加构建日期,以及其他一些内容.
据我所知,链接器创建头信息,但我没有在LD脚本中看到任何引用它的内容(虽然我是ld脚本的新手).
我正在使用gcc并为ARM构建.
谢谢!
更新:
我的编译器有一个问题,告诉我有一个'未定义的引用'我要在库中使用的函数.让我分享一下这个问题的一些信息:
所以我的想法是它可能是我包含库文件的顺序,但我不确定订购它们的正确方法是什么.我尝试在.o文件之前和之后包含headers文件夹.
一些建议会很好,也许可以解释链接器如何做它的事情.
谢谢!
回答答案
感谢所有的回复!我学到很多关于图书馆的知识.我想把所有答案都作为公认的答案:-)
我有一个导入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,没有指针的其他函数工作正常.我该如何处理指针?我必须编组吗?也许我必须有一个固定的地方来放置数据吗?
解释会很棒.
谢谢!理查德
我想在我的STM32闪存中有两个应用程序,一个基本上是启动,另一个是'主'应用程序.我已经想出如何将它们中的每一个加载到闪存的不同区域,并且在获取内存转储后,所有内容看起来都在正确的位置.
因此,当我进行重置时,它会加载引导,此时所有引导都会跳转到应用程序.调试启动,这一切似乎都正常工作.但是,在我跳转到应用程序之后问题到了,它只执行一条指令(汇编),然后跳回到启动.它应该无限期地留在应用程序中.
我的问题是,我应该在应用程序中"跳转"到哪里?
似乎有一些潜在的点,例如中断向量,重置处理程序,应用程序的主要功能.其实我已经尝试了所有这些没有成功的人.
希望这是有道理的,如果没有,我会更新问题.
谢谢你的帮助!理查德
有一些很好的文章解释了 CSP 的选项,就像这样:http : //www.html5rocks.com/en/tutorials/security/content-security-policy/
也许这是完全显而易见的,因为我找不到任何好的例子,但是您如何在实践中实际实施 CSP?
在 PHP 中,您可以在您服务的页面上设置标题,但是如果您只有一个 HTML 文件呢?您是否必须通过您的网络服务器、apache 或类似服务器来完成?这似乎不是一个简单的方法。
这里的最佳做法是什么?服务的每个单独页面都应该手动设置标题吗?
谢谢!
我开发了一个使用appcache的iPad网络应用程序.它不是一个完全离线的应用程序,但我使用appcache存储大型图像文件,以便它们不通过3G发送.问题是当清单更新时,appcache会更新iPad是否在wifi或3G上,这可能很昂贵.
是否可以让用户决定是否可以更新appcache?从我所看到的,这是不可能的,这一切都是自动发生的,你只是得到了事件.但也许有一些诡计就像在飞行中或类似地写清单.
如果有帮助,在服务器端使用PHP.谢谢.
我想实现想要我认为是一个相当标准的反馈循环,但是自从我看了控制理论并且我无法理解概念和找到实现示例以来已经很多年了.我希望有人可以用简单的术语解释发生了什么,并且可能指出我可以用来实现解决方案的一些资源.我在这个主题上看到的所有信息通常都淹没在数学中.
所以这就是我想要实现的目标:
我需要在一些阈值内处理斜坡和振荡.我也在C工作.
谢谢,理查德