- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 gnu sparc 工具链。我有 sparc-ab-elf-gcc 和 sparc-ab-linux-gcc。 (“ab”是处理器名称)。我想在裸机(没有操作系统)上编译一个使用 malloc 和 free 的程序(该程序应该在 Linux 上运行)。所以我应该使用 sparc-ab-elf-gcc 编译它。我听说我可以在这种情况下使用 dlmalloc 。 (参见 stdlib-like library on bare metal environment? (memory management and hopefully pthread support) )但我看到一些简单测试程序的编译错误,该程序每次只执行一次 malloc 和 free 。
// test malloc, realloc and free
#include <aldebaran.h>
#include <malloc.h>
int main()
{
int i;
ab_printf("%s\n",CKIM_XX);
char *buff = dlmalloc(100);
for(i = 0; i < 100; i++) {
buff[i] = (char) i;
}
ab_printf("buff = %x\n'");
for(i=0; i<100; i++) {
ab_printf("%d ", buff[i]);
}
ab_printf("\n");
dlfree(buff);
return 0;
}
ckim@stph45:~/prj2/abts/yolo-bare/darknet] make test3
sparc-ab-elf-gcc -c -I./src -I../include -I/opt/abde/sparc-ab-elf/include -DALDEBARAN_FPGA -DABC_CT -O3 -ffast-math -fcommon -msoft-float -mcpu=v8 -Wa,-xarch=v8plusb -Wall -Wfatal-errors ./src/malloc.c -o obj/malloc.o
./src/malloc.c:571:40: fatal error: sys/mman.h: No such file or directory
compilation terminated.
make: *** [obj/malloc.o] Error 1
我的裸机系统没有sys/mman.h(我在elf工具链库上搜索到它),所以在定义LACKS_SYS_MMAN_H后再次尝试并得到
ckim@stph45:~/prj2/abts/yolo-bare/darknet] make test3
sparc-ab-elf-gcc -c -I./src -I../include -I/opt/abde/sparc-ab-elf/include -DALDEBARAN_FPGA -DABC_CT -O3 -ffast-math -fcommon -msoft-float -mcpu=v8 -Wa,-xarch=v8plusb -Wall -Wfatal-errors -DLACKS_SYS_MMAN_H ./src/test3.c -o obj/test3.o
sparc-ab-elf-gcc -c -I./src -I../include -I/opt/abde/sparc-ab-elf/include -DALDEBARAN_FPGA -DABC_CT -O3 -ffast-math -fcommon -msoft-float -mcpu=v8 -Wa,-xarch=v8plusb -Wall -Wfatal-errors -DLACKS_SYS_MMAN_H ./src/malloc.c -o obj/malloc.o
./src/malloc.c: In function 'mmap_alloc':
./src/malloc.c:2924:5: warning: implicit declaration of function 'mmap' [-Wimplicit-function-declaration]
./src/malloc.c:2924:24: error: 'PROT_READ' undeclared (first use in this function)
compilation terminated due to -Wfatal-errors.
make: *** [obj/malloc.o] Error 1
dlmalloc.c 是一个非常长的程序。 (我把它分为malloc.h和malloc.c)下面是出错的函数..
/* Malloc using mmap */
static void* mmap_alloc(mstate m, size_t nb) {
size_t mmsize = mmap_align(nb + SIX_SIZE_T_SIZES + CHUNK_ALIGN_MASK);
if (m->footprint_limit != 0) {
size_t fp = m->footprint + mmsize;
if (fp <= m->footprint || fp > m->footprint_limit)
return 0;
}
if (mmsize > nb) { /* Check for wrap around 0 */
char* mm = (char*)(CALL_DIRECT_MMAP(mmsize)); <=== line causing error.
if (mm != CMFAIL) {
size_t offset = align_offset(chunk2mem(mm));
size_t psize = mmsize - offset - MMAP_FOOT_PAD;
mchunkptr p = (mchunkptr)(mm + offset);
p->prev_foot = offset;
p->head = psize;
mark_inuse_foot(m, p, psize);
chunk_plus_offset(p, psize)->head = FENCEPOST_HEAD;
chunk_plus_offset(p, psize+SIZE_T_SIZE)->head = 0;
if (m->least_addr == 0 || mm < m->least_addr)
m->least_addr = mm;
if ((m->footprint += mmsize) > m->max_footprint)
m->max_footprint = m->footprint;
assert(is_aligned(chunk2mem(p)));
check_mmapped_chunk(m, p);
return chunk2mem(p);
}
}
return 0;
}
有人可以给我一盏灯吗?
最佳答案
I heard I can use dlmalloc for this case
再次阅读该答案。特别注意:“......你应该能够适应......”。您还没有完成改编部分。
关于c - 裸机 (elf) 程序构建的 dlmalloc 编译期间出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44388743/
QtCreator 有一个名为“Bare Metal”的插件。裸机是指没有操作系统的计算机。我对 Qt Bare Metal 的开发了解不多。它是一种为裸机系统开发 Qt 的方法吗? Qt 可以在没有
寻找 docker 对裸机的支持,以便它可以加入 swarm 集群。 可能是一台 docker 机器,因此很容易与 docker swarm 集成。 尝试了很多,但找不到可能的解决方案。 最佳答案 你
我正在尝试使用 LLVM 生成用于裸机 ARM Cortex M4 开发的代码。IR 的创建进展顺利,LLVM 正在生成(在我看来)正确的 ARM Thumb ASM。 我购买了 Arm 开发套件来进
我正在尝试了解裸机 C 应用程序的确切工作原理。我编写了自己的调用 __libc_init_array 的启动程序集代码,我看到它遍历 preinit_array 部分并调用其中的所有函数。据我了解,
我一直在使用 C 为 Raspberry Pi 2 编写内核。为此我一直在关注 Valvers和 Baking Pi (用 Assembly 编写)教程来做到这一点。但每次我尝试移植函数以设置一个引脚
裸机(基于管理程序)和主机虚拟化类型有什么区别? 最佳答案 托管虚拟机管理程序的一个著名示例是 Oracle VM VirtualBox。其他包括 VMWare 服务器和工作站、Microsoft V
我目前有Prometheus安装了裸机并作为docker容器运行。我使用它来监视我们的基础架构以及Kubernetes集群。 为了进行此HA设置,我尝试在2个Prometheus实例之前部署代理或查询
我正在尝试在裸机上使用Istio,我想使用所需的最少资源,以便通过Envoy和Cert-Manager获得一个Ingress Controller (也许以后会发展为使用更高级的服务网格功能)。我尝试
我正在尝试设置一个裸机 Kubernetes 集群。我已经设置了基本的集群,没问题,但我似乎无法让 MetalLB 正常工作以向服务公开外部 IP。 我的最终目标是能够部署具有 2 个以上副本的应用程
我想在 Intel Galileo 板上编写一个小的“hello world”裸机 应用程序。使用 UEFI 打印文本(到 UART-1)当然效果很好,但我想“手动”访问 UART,而无需 UEFI
我正在尝试让“hello world”类型的程序在我的 Beagleboard-xm 版本上运行。 C,通过从程序集调用 C puts 函数。 到目前为止,我一直将其用作引用:http://wiki.
我刚开始在 2 个私有(private)云服务器上设置 2 个节点(主从)上的 Kubernetes。我已经安装了它,做了基本的配置,让它运行了一些简单的从 master 到 minion 的 pod
是否有某个指南描述了如何让 LLVM 为 Cortex-M3 发出二进制文件,我可以将其按摩为运行裸机?我花了大量时间在 Windows 和 Ubuntu 上玩 LLVM,但无济于事。我可以得到类似
我目前正在尝试使我编写的程序在裸机臂设备上运行。由于我还没有该设备,因此我尝试使用 qemu 在 Arm 仿真上运行代码。 我使用以下命令运行我的代码:qemu-system-arm -M realv
我已经在本地集群中设置了Elastic + Kibana + metricbeat。但是metricbeat无法连接到Elastic: ERROR pipeline/output.go:100
OS: RHEL7 | k8s version: 1.12/13 | kubespray | baremetal 我部署了一个标准的 kubespray 裸机集群,我试图了解部署 nginx-ingr
我正在使用 gnu sparc 工具链。我有 sparc-ab-elf-gcc 和 sparc-ab-linux-gcc。 (“ab”是处理器名称)。我想在裸机(没有操作系统)上编译一个使用 mall
我是一个 wicket 新手,想从 wicket-examples 中部署简单的知名 helloworld,但没有 IDE、ant 或 maven。我做了什么: web.xml: Wick
我正在尝试在“CentOS Linux release 7.0.1406”上部署 kubernetes 使用“yum install kubernetes” 其中安装了“kubernetes-0.17
所以我知道 ldr/str on arm 的问题数不胜数。也许这是另一个转折(不太可能),或者我只是错过了一些东西(更有可能。) 所以这是裸机,我想在内存中加载/存储一些变量。因为我坚持我想给它一个名
我是一名优秀的程序员,十分优秀!