标签: scratchbox

当mkdir -p不可用时,如何在makefile中创建目录?

我有一个makefile,它通常创建目录:

$(Release_target_OBJDIR)/%.o: %.cpp
     mkdir -p $(dir $@)
     $(COMPILE.cpp) $< $(CFLAGS) $(INCLUDES) -o $@
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我在scratchbox2下运行它时,mkdir -p命令总是无声地失败.

我尝试了以下无效的kludge:

$(Release_target_OBJDIR)/%.o: %.cpp
    mkdir $(dir $(dir $(dir $@)))
    mkdir $(dir $(dir $@))
    mkdir $(dir $@)
    $(COMPILE.cpp) $< $(CFLAGS) $(INCLUDES) -o $@
Run Code Online (Sandbox Code Playgroud)

这输出:

mkdir -p /home/foo/projects/htc/arm/obj/cbar/release/                  
mkdir -p /home/foo/projects/htc/arm/obj/cbar/release/                  
mkdir -p /home/foo/projects/htc/arm/obj/cbar/release/  
Run Code Online (Sandbox Code Playgroud)

...尾部斜杠阻止dir函数以我想要的方式剥离最后一个目录.

如果没有编写脚本或小型C应用程序来复制"-p"功能,是否有人有任何想法在makefile中创建子目录?

如果没有-p选项,当makefile尝试创建已存在的目录时,mkdir将给出错误.我可以做mkdir blah 2>/dev/null但是我冒着失去其他错误消息的风险.

有没有人有任何想法为什么mkdir -p在scratchbox2下不起作用?

编辑

根据bobbogo的建议,我把它放在一起.它看起来相当复杂,但似乎工作,即使在scratchbox2下.

# Generic variables for use in functions
comma:= ,
empty:=
space:= $(empty) $(empty)

# Make directory function
forlooprange = $(wordlist 1,$(words $1),1 2 …
Run Code Online (Sandbox Code Playgroud)

gnu-make mkdir scratchbox

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

qemu:未捕获的目标信号11(分段故障)

在刮擦盒内我正在执行git clone,收到以下错误:

qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Run Code Online (Sandbox Code Playgroud)

错误:

/pi$ sb2 -t rfs-raspbian -eR git clone git://github.com/danwinship/glib.git
Cloning into 'glib'...
remote: Counting objects: 72484, done.
remote: Compressing objects: 100% (11555/11555), done.
remote: Total 72484 (delta 61357), reused 71916 (delta 60808)
Receiving objects: 100% (72484/72484), 28.86 MiB | 59 KiB/s, done.
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
error: index-pack died of signal 11
fatal: index-pack failed
Run Code Online (Sandbox Code Playgroud)

安装QEmu版本:

qemu-arm -version  
qemu-arm version 1.3.90, Copyright …
Run Code Online (Sandbox Code Playgroud)

qemu embedded-linux scratchbox

6
推荐指数
1
解决办法
4133
查看次数

Python on Arm,非法指令

我正在尝试为ARM920T(架构4T)编译Python 3.2,但我遇到了一些奇怪的错误.

我正在Scratchbox环境中编译Python,配置为使用以下编译器:"gcc版本4.3.3(Sourcery G ++ Lite 2009q1-203)"这是一个arm交叉编译器.

在编译时,我确保在以下环境变量中设置-march = armv4t架构标志:CFLAGS,CPPFLAGS,SBOX_EXTRA_COMPILER_FLAGS.

它在scratchbox中编译很好,我能够使用scratchbox arm模拟器运行python解释器.

然而,当我将它移动到我的ARM920T时,我在运行python exe后立即得到了一个非法指令错误.

核心转储产生以下输出:

Program terminated with signal 4, Illegal instruction.
#0 0x00138810 in __aeabi_dadd ()
Run Code Online (Sandbox Code Playgroud)

并且后面跟踪的前几行:

#0  0x00138810 in __aeabi_dadd ()
#1  0x001134f4 in PyLong_FromString (str=0x402de300 "3644798167", pend=0x0, base=10) at Objects/longobject.c:2001
#2  0x00132478 in parsenumber (s=<value optimized out>, c=<value optimized out>) at Python/ast.c:3189
#3  ast_for_atom (n=<value optimized out>, c=<value optimized out>) at Python/ast.c:1396
#4  ast_for_power (n=<value optimized out>, c=<value optimized out>) at Python/ast.c:1726
#5  ast_for_expr (c=0xbeaf7f50, n=0x402f5b78) at …
Run Code Online (Sandbox Code Playgroud)

python arm cross-compiling scratchbox

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

Scratchbox中的Scons:找不到g ++

我一直在使用带有基于Make的代码库的sbox而没有任何问题.现在我正在使用基于scons的代码库,并且遇到了一些奇怪的问题.

似乎在scratchbox中,scons找不到g ++.例如,它尝试执行以下操作:

你好hello.c

什么时候该做:

g ++ -o hello hello.c

所以可能它的g ++字符串变量是空的.g ++存在于PATH中 - "g ++"产生/ scratchbox/compilers/bin/g ++.

相同的源在scratchbox之外构建得很好,所以它不应该是scons或代码库的问题.工作时,没有在scratchbox之外设置的特殊环境变量.

如果我象征性地将/ usr/bin/g ++链接到/ scratchbox/compilers/bin/g ++,它会更进一步(产生正确的g ++命令)但是在执行它们时会产生:

sb_gcc_wrapper(g ++):/ scratchbox/compilers/arm-linux-cs2007q3-51sb3/bin/sbox-arm-none-linux-gnueabi-g ++:没有这样的文件或目录

列出的文件存在.

PATH包含/ scratchbox/compilers/bin,SBOX_REDIRECT_FROM_DIRS包含/ usr/bin,SBOX_REDIRECT_TO_DIRS包含/ scratchbox/compilers/bin,所以我认为它应该能够找到它.

任何建议,将不胜感激!谢谢,雷

编辑:也许相关 - 除非我在scons文件中添加完整路径,否则它也找不到pkg-config

environment-variables cross-compiling scons scratchbox

4
推荐指数
1
解决办法
3358
查看次数

Scratchbox2返回"函数getline的隐式声明",以及其他奇怪的行为

我正在尝试交叉编译我的maemo环境(GNU)应用程序.在正常编译应用程序时,一切正常,但是当它通过sb2编译时会出现以下警告:

$ sb2 gcc -D_GNU_SORCE -o app -Wall -g -I.......//don't think this is relevant

 In file included from wifi_collector_menu.c:50:
 wifi_collector_list.c: In function `show_net_apns':
 wifi_collector_list.c:777: warning: implicit declaration of function `getline'
Run Code Online (Sandbox Code Playgroud)

我完全混淆为什么会发生这种情况,还有其他的getline在程序中有效,我试图在代码内部和编译器命令中同时定义变量_GNU_SOURCE(不是同时)这是行显然导致警告的代码:

size_t bytesnum = MAX_ESSID;
size_t bytes_read;
char *netname = NULL;
printf("Enter name of selected network:");
bytes_read=getline(&netname,&bytesnum,stdin);//This line
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,提前谢谢.

c gnu implicit getline scratchbox

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