- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Rust 项目,它使用 cargo-xbuild 交叉编译 ARM Cortex-M7 核心的核心、alloc 和 compiler_builtins,使用目标规范(见下文)。
到目前为止,我使用的是 arm-none-eabi-gcc 链接器。这很有效。
由于 ld.lld 链接器足够成熟,我想切换到它。因此我改变了目标规范。但是,我收到奇怪的错误,说链接器风格是 gnu
并且它还传递了 -nostartfiles
,它未被识别为参数。
[thumbv7em-none-eabi-gcc.json]
"abi-blacklist": [
"stdcall",
"fastcall",
"vectorcall",
"thiscall",
"win64",
"sysv64"
],
"arch": "arm",
"data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64",
"emit-debug-gdb-scripts": false,
"env": "",
"executables": true,
"is-builtin": true,
"linker": "arm-none-eabi-gcc",
"linker-flavor": "gcc",
"llvm-target": "thumbv7em-none-eabi",
"pre-link-args": {
"gcc" : [
"-mcpu=cortex-m4", "-mthumb",
"-nostartfiles", "-nostdlib",
"-Tlayout.ld", "-ffreestanding"
]
},
"max-atomic-width": 32,
"os": "none",
"panic-strategy": "abort",
"relocation-model": "static",
"target-c-int-width": "32",
"target-endian": "little",
"target-pointer-width": "32",
"vendor": ""
}
[thumbv7em-none-eabi-lld.json]
{
"abi-blacklist": [
"stdcall",
"fastcall",
"vectorcall",
"win64",
"sysv64"
],
"arch": "arm",
"cpu" : "cortex-m4",
"data-layout": "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64",
"env": "",
"executables": true,
"linker-flavor": "ld.lld",
"llvm-target": "thumbv7em-none-eabi",
"max-atomic-width": 32,
"os": "none",
"panic-strategy": "abort",
"link-args": {
"ld.lld" : [
"-Tlayout.ld"]
},
"relocation-model": "static",
"target-endian": "little",
"target-pointer-width": "32",
"target-c-int-width": "32",
"vendor": ""
}
[错误]
Compiling stm32f3 v0.1.0 (file:///home/cylon2p0/stm32f3)
Running `rustc --crate-name stm32f3 src/main.rs --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=ecb4f772152518d9 -C extra-filename=-ecb4f772152518d9 --out-dir /home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps --target /home/cylon2p0/stm32f3/thumbv7em-none-eabi.json -C incremental=/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/incremental -L dependency=/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps -L dependency=/home/cylon2p0/stm32f3/target/debug/deps -C link-arg=-Tlayout.ld -C link-arg=-nostartfiles --sysroot /home/cylon2p0/stm32f3/target/sysroot`
error: linking with `lld` failed: exit code: 1======> ] 2/3: stm32f3
|
= note: "lld" "-flavor" "gnu" "-L" "/home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib" "/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps/stm32f3-ecb4f772152518d9.1f6vm61vpmp6og7k.rcgu.o" "-o" "/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps/stm32f3-ecb4f772152518d9" "--gc-sections" "-L" "/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps" "-L" "/home/cylon2p0/stm32f3/target/debug/deps" "-L" "/home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib" "-Bstatic" "/home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib/libcore-08f9d20805b02a18.rlib" "/home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib/libcompiler_builtins-898d35b0b97ca347.rlib" "-Tlayout.ld" "-nostartfiles" "-Bdynamic"
= note: lld: error: unknown argument: -nostartfiles
error: aborting due to previous error
error: Could not compile `stm32f3`.
Caused by:
process didn't exit successfully: `rustc --crate-name stm32f3 src/main.rs --crate-type bin --emit=dep-info,link -C debuginfo=2 -C metadata=ecb4f772152518d9 -C extra-filename=-ecb4f772152518d9 --out-dir /home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps --target /home/cylon2p0/stm32f3/thumbv7em-none-eabi.json -C incremental=/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/incremental -L dependency=/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps -L dependency=/home/cylon2p0/stm32f3/target/debug/deps -C link-arg=-Tlayout.ld -C link-arg=-nostartfiles --sysroot /home/cylon2p0/stm32f3/target/sysroot` (exit code: 101)
编辑:删除 -nostartfiles
会导致段错误。
"lld" "-flavor" "ld.lld" "-L" "/home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib" "/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps/stm32f3-ecb4f772152518d9.1f6vm61vpmp6og7k.rcgu.o" "-o" "/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps/stm32f3-ecb4f772152518d9" "--gc-sections" "-L" "/home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps" "-L" "/home/cylon2p0/stm32f3/target/debug/deps" "-L" "/home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib" "-Bstatic" "/home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib/libcore-08f9d20805b02a18.rlib" "/home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib/libcompiler_builtins-898d35b0b97ca347.rlib" "-Tlayout.ld" "-Bdynamic"
LLVMSymbolizer: error reading file: No such file or directory
#0 0x00007f61706919cb llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/usr/bin/../lib/libLLVM-6.0.so+0x8759cb)
#1 0x00007f617068f886 llvm::sys::RunSignalHandlers() (/usr/bin/../lib/libLLVM-6.0.so+0x873886)
#2 0x00007f617068f9d3 (/usr/bin/../lib/libLLVM-6.0.so+0x8739d3)
#3 0x00007f616ea2e8f0 __restore_rt (/usr/bin/../lib/libc.so.6+0x368f0)
#4 0x00007f616f6c280e lld::elf::ARMExidxSentinelSection::empty() const (/usr/bin/../lib/liblldELF.so.6+0x14e80e)
#5 0x00007f616f707bd6 (/usr/bin/../lib/liblldELF.so.6+0x193bd6)
#6 0x00007f616f725be5 (/usr/bin/../lib/liblldELF.so.6+0x1b1be5)
#7 0x00007f616f7286f0 void lld::elf::writeResult<llvm::object::ELFType<(llvm::support::endianness)1, false> >() (/usr/bin/../lib/liblldELF.so.6+0x1b46f0)
#8 0x00007f616f613180 void lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1, false> >(llvm::opt::InputArgList&) (/usr/bin/../lib/liblldELF.so.6+0x9f180)
#9 0x00007f616f5d2155 lld::elf::LinkerDriver::main(llvm::ArrayRef<char const*>, bool) (/usr/bin/../lib/liblldELF.so.6+0x5e155)
#10 0x00007f616f616598 lld::elf::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&) (/usr/bin/../lib/liblldELF.so.6+0xa2598)
#11 0x000055c3a5b673a6 (lld+0x13a6)
#12 0x00007f616ea1b06b __libc_start_main (/usr/bin/../lib/libc.so.6+0x2306b)
#13 0x000055c3a5b67c0a (lld+0x1c0a)
Stack dump:
0. Program arguments: lld -flavor ld.lld -L /home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib /home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps/stm32f3-ecb4f772152518d9.1f6vm61vpmp6og7k.rcgu.o -o /home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps/stm32f3-ecb4f772152518d9 --gc-sections -L /home/cylon2p0/stm32f3/target/thumbv7em-none-eabi/debug/deps -L /home/cylon2p0/stm32f3/target/debug/deps -L /home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib -Bstatic /home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib/libcore-08f9d20805b02a18.rlib /home/cylon2p0/stm32f3/target/sysroot/lib/rustlib/thumbv7em-none-eabi/lib/libcompiler_builtins-898d35b0b97ca347.rlib -Tlayout.ld -Bdynamic
Segmentation fault (core dumped)
最佳答案
所以我发现了问题 - 它在链接描述文件中。我为 FLASH 定义了从 0x08000000
开始的内存区域,然后在 .text 中我试图将向量表定位到 FLASH 的开头,所以我添加了语句 。 = 0
。 LLD 由于此声明而崩溃,而 GCC 则没有。
关于rust - 使用 LD.LLD 链接 Rust 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51223564/
我正在尝试创建尽可能小的 ELF。我创建了一个这样的测试文件(NASM 语法): SECTION .text dd 0xdeadbeef 使用此链接描述文件: SECTIONS { .text
GNU LD 链接器命令语言是否有条件语句? 背景:我正在为 arm cortex m0+ 开发固件,该固件由引导加载程序和应用程序组成。两者都在单独的项目中进行编译和刷新,但我使用了一个框架,其中包
我很确定 ld 有一个手册页链接器脚本语法,但我找不到它。 最佳答案 如果您更喜欢比 info 更方便的东西, 这是一个可浏览的 HTML 版本:ld.info: Scripts .但它可能不是完全最
谁能解决这个练习,这样我就能明白我错在哪里,因为有太多的 LOL 变量。 生成一个 C 代码,将其放在以下表达式之前 printf ("% ld% ld% ld \ n", lol, & lol, *
在他关于理解 Linux Kernel Initcall Mechanism 的文章中, Trevor 创建了一个用户空间程序来模拟调用 linux 驱动程序的 init_module() 的机制。
/usr/bin/ld: cannot find -ldlib /usr/bin/ld: cannot find -lcblas /usr/bin/ld: cannot find -llapack 在
我想以 json-ld 格式创建一组人,但我需要保留一些键而不是使用数组,所以我首先尝试了这个: { "@context" : { "@base" : "http://www.exampl
所以我试图围绕 JSON-LD 进行思考,我看到的所有示例主要包括嵌入“链接数据”。但我想提供对链接数据的引用(主要是因为嵌入所有数据可能会产生 10MB 的有效负载)。所以我想知道我这样做是否正确。
我在这里复制了 json-ld standard 中的示例的一部分: { "@context": { "foaf": "http://xmlns.com/foaf/0.1/", "
考虑这样一个程序: #include void foo() __attribute__((__weak__)); int main() { printf("%p\n", (void *)fo
我正在尝试使用一个名为 GLV 的小部件库对于我正在开发的应用程序。我正在运行 Linux Mint 17。我安装了所有库并成功构建了 GLV 库,但是当我尝试运行已构建的示例之一时,出现了此共享库错
在将未编辑的 JSON 数据转换为 JSON-LD 时,使用前缀和数据值为对象构造 IRI 时遇到问题。我运行的示例代码是: { "@context" : { "prefix" : "
假设我有一个 JSON 对象,它在嵌套对象中包含一些属性。 { "title": "My Blog Post", "meta": { "publishedAt": "2
我是 JSON-LD 和 LOD 的新手,所以请原谅我使用的术语。我正致力于在 JSON-LD 中创建数据模型,以描述基于欧洲数据模型 (http://pro.europeana.eu/edm-doc
我有一个玩具 x86 汇编程序,我正在用 as 编写和编译它和 ld : .text .global _start _start: movq $1, %rax movq
我正在尝试创建 Google 的结构化数据,但不知道我在做什么。我将其设置为一个组织,然后将 SD 标记工具用于我的所有产品。我将每个 JSON-LD 产品直接从标记工具而不是嵌套放入它自己的脚本标签
我正在尝试创建 Google 的结构化数据,但不知道我在做什么。我将其设置为一个组织,然后将 SD 标记工具用于我的所有产品。我将每个 JSON-LD 产品直接从标记工具而不是嵌套放入它自己的脚本标签
我正在尝试使用 vcpkg 和 ndk r20 为 android arm 构建 tesseract我必须编辑 CMakeLists.txt 并添加 glob.c 和 glob.h,因为它们不在 nd
长话短说: 有没有办法让我(没有 root 访问权限)使链接器(由 gcc 调用)不知道 /etc/ld.so.conf 中包含的目录的内容 在通过 ldconfig 缓存之后? 详细说明: 我正在尝
我想将/opt/vertica/lib64 添加到系统库路径中,所以我执行以下步骤: (1) 将/opt/vertica/lib64加入/etc/ld.so.conf,运行ldconfig, (2)
我是一名优秀的程序员,十分优秀!