2016-08-13 200 views
1

我已經設置了一個新環境 - 這是一個包含Ubuntu 14.04(可靠)的Chromebook(華碩flip C100P - 基於ARM)的chroot。我已經安裝了gcc和g ++。我創建了一個簡單的 「你好,世界」 程序(test.c的),並通過編譯它:無法運行使用gcc構建的可執行文件

gcc -o t.exe test.c 

當我去./t1.exe跑,我得到如下:

bash: ./t.exe: Permission denied 

請注意,我以root身份執行,並將./t.exe的權限設置爲打開(chmod 777,通過ls -l驗證)。

於是,我決定什麼是錯的 - 這裏就是我已經試過:

%文件./t.exe

./t.exe: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=82a6c6227e0f7171a68c71a74c6e6396e37e6675, not stripped 

%LDD ./t.exe

not a dynamic executable 

%readelf -d ./t.exe |的grep NEEDED

0x00000001 (NEEDED)      Shared library: [libc.so.6] 

%的dpkg -l libc6的

Desired=Unknown/Install/Remove/Purge/Hold 
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend 
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) 
||/ Name   Version  Architecture Description 
+++-==============-============-============-================================= 
ii libc6:armhf 2.19-0ubuntu armhf  Embedded GNU C Library: Shared li 

%貓/etc/ld.so.conf.d/*

# Multiarch support 
/lib/arm-linux-gnueabihf 
/usr/lib/arm-linux-gnueabihf 
/usr/lib/arm-linux-gnueabihf/mesa-egl 
/usr/lib/arm-linux-gnueabihf/mesa 
/usr/lib/arm-linux-gnueabihf/libfakeroot 
# libc default configuration 
/usr/local/lib 

%LS -l libc.so. 6

lrwxrwxrwx 1 root root 14 Aug 12 19:37 libc.so.6 -> /lib/libc.so.6 

%LS -l /usr/local/lib/libc.so.6

lrwxrwxrwx 1 root root 14 Aug 12 18:21 /usr/local/lib/libc.so.6 -> /lib/libc.so.6 

%LS -l /usr/lib/libc.so.6

lrwxrwxrwx 1 root root 14 Aug 12 19:37 /usr/lib/libc.so.6 -> /lib/libc.so.6 

%LS -l /lib/libc.so.6

lrwxrwxrwx 1 root root 34 Aug 12 18:11 /lib/libc.so.6 -> /lib/arm-linux-gnueabihf/libc.so.6 

%LS -l /lib/arm-linux-gnueabihf/libc.so.6

lrwxrwxrwx 1 root root 12 May 26 07:55 /lib/arm-linux-gnueabihf/libc.so.6 -> libc-2.19.so 

%LS -l /lib/arm-linux-gnueabihf/libc-2.19.so

-rwxr-xr-x 1 root root 902876 May 26 07:56 /lib/arm-linux-gnueabihf/libc-2.19.so 

%objdump的-a /lib/arm-linux-gnueabihf/libc-2.19.so

/lib/arm-linux-gnueabihf/libc-2.19.so:  file format elf32-littlearm 

/lib/arm-linux-gnueabihf/libc-2.19.so

% objdump -a ./t.exe

./t.exe:  file format elf32-littlearm 

./t。EXE

%UNAME -a

Linux localhost 3.14.0 #1 SMP PREEMPT Tue Aug 2 21:07:06 PDT 2016 armv7l armv7l armv7l GNU/Linux 

我懷疑我有一個borked工具鏈,但我確實在這一點難倒。
有沒有人有任何想法在這裏發生了什麼或如何進行發現問題?

+0

哇,我將這個Q保存在令人驚奇的cmds列表中,以檢查...但是,嘗試'printf「#!/ bin/bash \ necho Hello腳本!\ n」> ./myTest.sh; chmod 755 myTest.sh; 。/ myTest.sh'。 (我可能錯過了''''或'''等,但希望你能明白)。如果這個失敗了,那麼你的''''dir或者其中的一個「上面的」目錄是有問題的。有關一些想法,請參閱http://stackoverflow.com/a/26718467/620097。祝你好運。 – shellter

+1

你有沒有試過編譯過類似'-march = i686'的東西?看起來您的二進制文件是爲Chromebook生成的,而不是爲Ubuntu生成的(您可以嘗試將可執行文件複製到Chromebook,並在那裏運行,這證實了這一點)。 – MondKin

+0

@Mondkin - 錯誤的架構。這是在ARM上。即使我指定了ARM的選項,我也不認爲它會有所作爲。我不理解您的評論 - 「爲Chromebook而不是爲Ubuntu生成」;我沒有使用交叉工具集。我在Chromebook上運行Ubuntu,在運行Ubuntu的chroot中執行gcc。 – youngmj

回答

1

所以事實證明,我最初使用可移動SD卡上的目錄,而且我也使用該卡來容納我的加密chroot。 (不推薦BTW--非常慢)。因此,ChromeOS和Ubuntu可以看到並且可以訪問此目錄,而無需明確設置共享。

尋找答案,我偶然發現了以下內容:https://ubuntuforums.org/showthread.php?t=1956802。 事實證明,我的/ etc/fstab文件實際上是空的 - 它只包含「#UNCONFIGURED FSTAB FOR BASE SYSTEM」。

查看'mount'的輸出,看起來SD卡上的文件系統使用'noexec'掛載。我相信這是我的問題的根源 - 我想我可以用'exec'標誌爲這個文件系統添加一個fstab條目,並且所有應該都可以工作。但是,我決定不這樣做 - 畢竟,我只需要加密文件系統(它是SD卡上的容器文件)中的項目以允許執行文件,並使文件對SD卡文件系統直接執行可能會稍微不夠安全。因此,我決定簡單地將用於開發工作的目錄樹更改爲我的用戶主目錄(該目錄位於chroot中Ubuntu使用的加密文件系統中,顯然位於SD卡中的容器文件中,但不直接在SD卡分區本身的文件系統中)。我放棄了從我的chroot和ChromeOS環境立即訪問文件,但是,如果我將來真的需要這些文件,我可以設置一個共享 - 可能在一個單獨的設備/分區(USB閃存驅動器)上。

相關問題