환경은 Debian Wheezy 64bit에서 돌렸음

뭐 우분투에서 전에 한 번 해본것 같은데.. 잘 됐던걸로 기억하는뎅..


크로스컴파일러는 CodeSourcery G++ Lite 2009Q3 버전을 사용. 물론 path 지정해둔 상태라고 가정할께


유저는 drake


Python-2.7.3-xcompile.patch



/home/drake/src 에서 작업을 시작한당


apt-get source python2.7    // 소스코드를 받아

cd python-2.7.3    // 이건 아마 시기에 따라 다를거임. 아무튼 2.7.3 디렉토리로 들어가

./configure    // 호스트용 파이썬을 컴파일 준비해

make python Parser/pgen    // 호스트용 파이썬 컴파일해

mv python hostpython    // 호스트용 파이썬 일단 백업해

mv Parser/pgen Parser/hostpgen    // 이것도 일단 백업해
make distclean    // 필요한 파일을 얻었으니 지워버려

patch -p1 < Python-2.7.3-xcompile.patch    // 크로스컴파일링용 패치 적용해

CC=arm-none-linux-gnueabi-gcc CXX=arm-none-linux-gnueabi-g++ AR=arm-none-linux-gnueabi-ar RANLIB=arm-none-linux-gnueabi-ranlib ./configure --host=arm-none-linux-gnueabi --build=x86_64-linux-gnu    # ARM용 만들것 준비해

make HOSTPYTHON=./hostpython HOSTPGEN=./Parser/hostpgen BLDSHARED="arm-none-linux-gnueabi-gcc -shared" CROSS_COMPILE=arm-none-linuix-gnueabi- CROSS_COMPILE_TARGET=yes HOSTARCH=arm BUILDARCH=x86_64-linux-gnu    # 컴파일해


이제 필요한 파일 알아서 옮겨.


뭐 모르겠다면 configure 할때 prefix 옵션 주면 돼.

뒤에다가 --prefix=/home/drake/armfs/python 이런식으로.


참고한거 : http://randomsplat.com/id5-cross-compiling-python-for-embedded-linux.html

X itself puts on this screensaver by default. You can check this with xset q. To disable, type

bash:$ xset s off

X also automatically puts your pc in standby after 20 minutes or something, and it puts it into hibernate after 30. It would turn it off after 10 more minutes if it could. To disable this too, type:

bash:$ xset -dpms

You can do this automatically when you log in successfully by putting these lines in ~/.xsessionrc:

robo@anonymous:~$ cat .xsessionrc
# turn off default screensaver
xset s off
# turn off default standby, hibernate, ... after n minutes
xset -dpms
robo@anonymous:~$ 

The screen still goes blank after 10 minutes before you login, in gdm. But that doesn't bother me.

This was probably put in because of people with old monitors, that can have images burnt in to them. Or for energy saving purposes. Still a pain in the ass, though.

You can put it in Xorg.conf too : http://www.shallowsky.com/linux/x-screen-blanking.html

Greetings,

gksu gparted

tar cJf - * | ssh test@111.111.111.111 "cd /mailbackup; cat - > comp.tar.xz"

서로 다른 몇몇 머신에서 같은 어플리케이션을 돌려놓고 시간측정을 하거나 간단한 벤치마킹을 하거나 할 경우


일단 가장 좋은 방법은 스탑워치


그리고, 리눅스의 경우는..


time 어플리케이션


그러니까,


time eclipse


이런식으로 하면


총 시간이 얼마나 걸렸고 사용자 키입력을 받은 시간은 얼마다 까지 나옴..

실은 아무것도 안 나오고 리턴값이 0이면 성공한게 맞는데..


아무것도 안 나오지만 찜찜할 경우


echo $?


명령어를 입력하면 리턴값을 출력한다.

bash에서 없는 명령어를 쳤는데 아무것도 안 나온다거나 할때는 command-not-found라는 패키지를 설치해주면 좋다.

실행파일이 있는지 점검해보고, 비슷한게 나오면 어떤 패키지인지 알려준다.

x86에서는 기본으로 들어가 있는듯 한데, arm 아키텍쳐는 기본제공이 아닌듯..

update-command-not-found로 구성을 업데이트할 수 있다..


또, 컴파일을 할 때 어떤 라이브러리가 없다.. 뭐 이런게 나올 경우는..

웹 검색으로 찾는 방법이 가장 좋긴 하지만, apt-file find라는 명령어로 찾으면 좋다.

이건 apt-file update 명령어로 구성을 업데이트할 수 있다.


가끔 유용하게 쓰인다.. 라이브러리같은 경우 거의 대부분 잘 찾아내는듯 싶다..

 modprobe -r kvm_intel

:se ff=unix

요건 *nix용


:se ff=dos

요건 도스용


:se ff=mac

요건 맥용



아아 어려워라

CPP을 리눅스에서 gcc로 컴파일 하게 되면 아래에서 얘기한것 처럼
undefined reference to `__gxx_personality_v0' 라는 에러가 발생한다.

몇년 전에 같은 문제로 어려움을 겪다가 구글에서 검색해보았더니,
전역변수로 int __gxx_personality_v0 를 선언해주면 된다고 하여 그렇게 사용을 해왔다.

하지만 최근 pthread 프로그램을 하다가 레드헷9.0 에서는 전혀 이상없이 실행이 되는데
페도라 코아 3.x(확실하지 않음) 에서는 segmentation fault 메시지를 출력하며
특정지점에서 프로그램이 죽어버리는 현상이 발생하였다.

이틀동안을 삽질하다가 발견한 이유는 상기 int __gxx_personality_v0 변수 선언 때문이었다.
이 선언을 삭제하니까 이상하게 세그먼트 오류가 전혀 발생하지 않는것이다.
정확한 메카니즘은 잘 모르겠지만 문제가 해결되어 검색을 하다보니 아래와 같은 내용이
있어 스크랩 해둔다.

--------------------------------------------------------------------

* 출처 : http://blog.naver.com/bozlo?Redirect=Log&logNo=40021287817

extern void a_func(void); 
///--> 주의 extern "C"를 사용하지 않는다. main.cpp , a.cpp 모두 같은 cpp 파일이다.


 #include "a.h"
int main(void) 
{ 
    a_func(); 
} 
a.cpp 

#include <stdio.h> 
void a_func(void) 
{ 
    printf("hello world\n"); 
} 

----------------------

gcc -c -o test.out a.cpp main.cpp 를 하면 다음과 같은 에러가 발생한다.

/tmp/ccSBYZq4.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'

gcc는 c,와 c++에 대해서 유연하게 대응하지 못한다, 특히 C++에 대해서
따라서, 명시적으로 g++을 이용하거나 libstdc++을 추가하는 방법으로 해야한다.

g++ -c -o test.out a.cpp main.cpp
gcc -c -o test.out a.cpp main.cpp -lstdc++
<주의 .. -Lstdc++ 안됨. L의 소문자  이어야 한다.>

+ Recent posts