회사일/STLinux2011. 11. 24. 20:07
Posted by 구차니
회사일/STLinux2010. 3. 15. 11:32
STLinux2.3용 타겟에서 glibc 크로스 컴파일은 안되고
타겟보드에서 직접 컴파일을 시도했다.

음.. 일단 옵션은

./configure --disable-sanity-checks --without-selinux

두가지를 주고 했다.
--disable-sanity-checks 를 하지 않으면
*** On GNU/Linux systems the GNU C Library should not be installed into
*** /usr/local since this might make your system totally unusable.
*** We strongly advise to use a different prefix.  For details read the FAQ.
*** If you really mean to do this, run configure again using the extra
*** parameter `--disable-sanity-checks'.
이런 에러가 발생한다.

원래 sanity check는
Optional Features:
  --disable-sanity-checks really do not use threads (should not be used except
                          in special situations) [default=yes]
thread를 사용하지 않도록 하는 거라는데 음..
/usr/local에 설치하도록 강요하는게 왜 .. 이 옵션일까?




항상 그러하듯 OOM은 어쩔수 없는 ㄱ-
gcc   -nostdlib/-nostarfiles -r -o /ro-t/glibcbuild/libc_pic.vs \
         -Wl,-d -Wl,--whoce-archie /root/glibc/build/lib2_pic.a

# cd glibc/build
# sh4-linux-gcc   -nostdlib -nostartfiles -r -o libc_pic.os \
         -Wl,-d -Wl,--whole-archive libc_pic.a

'회사일 > STLinux' 카테고리의 다른 글

stlinux iso 다운로드  (0) 2011.11.24
VLC 와 pkg-config  (0) 2010.03.09
ffmpeg 크로스컴파일시 오류발생 (STLinux2.2)  (2) 2010.03.08
python 2.5.4 컴파일시 bzip 에러  (0) 2010.02.25
python2.4 on STLinux with google api(gdata)  (0) 2010.02.23
Posted by 구차니
회사일/STLinux2010. 3. 9. 15:55
pkg-config는 라이브러리의 컴파일 당시 옵션이나
링킹시 필요한 옵션을 알려주는 역활을 하는 녀석이라고 한다.

아무튼 pkg-config가 존재하지 않는 시스템에서(예를 들어 STLinux Target)
vlc를 컴파일하려고 하니 에러가 발생한다(Fedora Core 6에는 존재한다.)

이러니 별별 변수를 다 쓰고
/usr/local/lib/pkg-config/*.pc
파일까지 복사해줘도 안되지 ㄱ-

vlc 컴파일 옵션중
# ./configure --help | grep AVCODEC
  AVCODEC_CFLAGS
              C compiler flags for AVCODEC, overriding pkg-config
  AVCODEC_LIBS
              linker flags for AVCODEC, overriding pkg-config
이녀석을 설정해도 안되고,
컴파일 시에도 이러한 에러가 나오지만 무시하고 넘어간다.
checking pkg-config is at least version 0.9.0... ./configure: line 23831: pkg-config: command not found
no

중요한건
혹시 모를
PKG_CONFIG_PATH 경로를 확인해야 한다는 점이다.
FC6에서는 /usr/local/lib/pkgconfig 였는데
타겟에서는 /lib/pkgconfig 였다 ㄱ-

pkg-config is a helper tool used when compiling applications and libraries. It helps you insert the correct compiler options on the command line so an application can use  gcc -o test test.c `pkg-config --libs --cflags glib-2.0`  for instance, rather than hard-coding values on where to find glib (or other libraries). It is language-agnostic, so it can be used for defining the location of documentation tools, for instance.

[링크 : http://pkg-config.freedesktop.org/wiki/]

[링크 : http://pkgconfig.freedesktop.org/releases/]
          pkg-config-0.23.tar.gz    16-Jan-2008 14:54     1.0M
[링크 : http://forum.videolan.org/viewtopic.php?f=2&t=68869]
[링크 : http://kldp.org/node/47612]
Posted by 구차니
회사일/STLinux2010. 3. 8. 17:22
STLinux2.2에서 크로스 컴파일을 시도하는데
sh4-linux-gcc -DHAVE_AV_CONFIG_H -I. -I"/home/morpheuz/st7109/target_ori/root/ffmpeg" --sysroot=/home/morpheuz/st7109/target_ori -D_ISOC99_SOURCE -D_POSIX_C_SOURCE=200112 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -std=c99 -fomit-frame-pointer -g -Wdeclaration-after-statement -Wall -Wno-switch -Wdisabled-optimization -Wpointer-arith -Wredundant-decls -Wno-pointer-sign -Wcast-qual -Wwrite-strings -Wundef -Wmissing-prototypes -O3 -fno-math-errno -fno-tree-vectorize        -MMD -MF ffserver.d -MT ffserver.o -c -o ffserver.o ffserver.c

libavcodec/vorbis_dec.c:1409: warning: no previous prototype for 'vorbis_inverse_coupling'
libavcodec/vorbis_dec.c: In function 'vorbis_decode_init':
libavcodec/vorbis_dec.c:575: warning: 'book_idx' is used uninitialized in this function
libavcodec/vorbis_dec.c:998: internal compiler error: in schedule_insns, at sched-rgn.c:2605
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:https://bugzilla.stlinux.com> for instructions.
make: *** [libavcodec/vorbis_dec.o] Error 1 
요런 에러가 발생한다.

물론, 컴파일도 제대로 완료되지 못하고 결과물도 생성되지 않는다.
버그리폿하려다가 그냥 STLinux2.3에 들어있는 sh4-linux-gcc로 하니 문제없이 해결!

뭥미? ㄱ-




아무튼, PATH 변수의 경로를 바꾸는 법이 있다지만, 귀차니즘으로 인해
config.mak 파일의 CC= AS= 등에
전부 절대경로로 바꾸어 넣어주었다.

# ./configure --enable-shared --target-os=linux --arch=sh4 --cross-prefix=sh4-linux- --enable-cross-compile

# vi config.mak
CC=/opt/STM/STLinux-2.3/devkit/sh4/bin/sh4-linux-gcc
AS=/opt/STM/STLinux-2.3/devkit/sh4/bin/sh4-linux-gcc
LD=/opt/STM/STLinux-2.3/devkit/sh4/bin/sh4-linux-gcc
DEPCC=/opt/STM/STLinux-2.3/devkit/sh4/bin/sh4-linux-gcc
AR=/opt/STM/STLinux-2.3/devkit/sh4/bin/sh4-linux-ar
RANLIB=/opt/STM/STLinux-2.3/devkit/sh4/bin/sh4-linux-ranlib
STRIP=/opt/STM/STLinux-2.3/devkit/sh4/bin/sh4-linux-strip

'회사일 > STLinux' 카테고리의 다른 글

glibc 타겟보드 컴파일  (2) 2010.03.15
VLC 와 pkg-config  (0) 2010.03.09
python 2.5.4 컴파일시 bzip 에러  (0) 2010.02.25
python2.4 on STLinux with google api(gdata)  (0) 2010.02.23
cross compiled python2.4 on STLinux2.3  (2) 2010.02.23
Posted by 구차니
회사일/STLinux2010. 2. 25. 10:22
파이썬을 크로스 컴파일(라고 하지만 엄밀하게는 타겟보드에서 컴파일)하는데 에러가 두가지가 났다.

Python-2.6.4# make
make: Current time: Timestamp out of range; substituting 1970-01-01 00:00:00
make: Warning: File `Makefile' has modification time 1.3e+09 s in the future
running build
running build_ext
INFO: Can't locate Tcl/Tk libs and/or headers
building 'termios' extension
gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -I/root/Python-2.6.4/./Include -I. -II
nclude -I./Include -I/usr/local/include -I/root/Python-2.6.4/Include -I/root/Python-2.6.4 -c /root/Python-2.6.4/Modules/termios.c -o
 build/temp.linux-sh4-2.6/root/Python-2.6.4/Modules/termios.o
/root/Python-2.6.4/Modules/termios.c:753: error: invalid application of 'sizeof' to incomplete type 'struct serial_struct'
/root/Python-2.6.4/Modules/termios.c:753: error: array type has incomplete element type
/root/Python-2.6.4/Modules/termios.c:753: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark
) in c_expr_sizeof_type, at c-typeck.c:2105
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:https://bugzilla.stlinux.com> for instructions.
building 'bz2' extension
gcc -pthread -fPIC -fno-strict-aliasing -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -I. -I/root/Python-2.6.4/./Include -I. -II
nclude -I./Include -I/usr/local/include -I/root/Python-2.6.4/Include -I/root/Python-2.6.4 -c /root/Python-2.6.4/Modules/bz2module.c
-o build/temp.linux-sh4-2.6/root/Python-2.6.4/Modules/bz2module.o
gcc -pthread -shared build/temp.linux-sh4-2.6/root/Python-2.6.4/Modules/bz2module.o -L/usr/local/lib -lbz2 -o build/lib.linux-sh4-2.
6/bz2.so
*** WARNING: renaming "bz2" since importing it failed: libbz2.so.1.0: cannot open shared object file: No such file or directory

Failed to find the necessary bits to build these modules:
_bsddb             _sqlite3           _tkinter
bsddb185           dbm                gdbm
sunaudiodev
To find the necessary bits, look in setup.py in detect_modules() for the module's name.


Failed to build these modules:
bz2                termios

running build_scripts
make: warning:  Clock skew detected.  Your build may be incomplete.


아무튼 bzip 다운로드는 아래 링크에서 하면된다.
[링크 : http://www.bzip.org/]


그나저나. 저넘의 termios는 어쩔? ㄱ-
Posted by 구차니
회사일/STLinux2010. 2. 23. 20:27

File "/usr/local/lib/python2.4/random.py", line 68, in ?
import _random
ImportError: /usr/local/lib/python2.4/lib-dynload/_random.so: undefined symbol: _PyArg_NoKeywords

요런 에러를 뱉어주시길래
먼가해서 한참을 골머리를 데굴데굴 굴려보았는데..

STLinux2.3 패키지에서
그냥 /usr/lib/python2.4 하위 폴더를 전부 교체 해주면된다.

아무래도 다른 버전과 꼬이거나 _error.so 파일에서 엉긴듯
(다른 이야기는 2.3과 2.4가 중복설치되면 그럴수도 있다고 한다.)
(이유는 모르겠지만, 2.4가 제대로 작동되는 기본 STLinux2.3 타켓에서는 _error.so가 발견되지 않았다.)



_error.so 를 해결하니, gdata 테스트에서

  File "/usr/lib/python2.4/site-packages/gdata/tlslite/utils/cryptomath.py", line 13, in ?
    from hashlib import sha1
ImportError: No module named hashlib

에러를 뱉어주신다. (뭥미!)
또 검색해보니, python2.5 용으로 추측되며 2.4용으로 backporting 된것이 존재한다고 한다.
문제는, 험난한... 컴파일의 벽 OTL python이 제대로 크로스컴파일 안된건지(ST 죽을래?)
gcc로 하려고 에러가 난다. 심볼릭 링크 걸고 하려니 산넘어 산..
그냥 풀 타겟에서 크로스컴파일 해서 넘기자 ㄱ-

# python setup.py install
Using OpenSSL version 0x0090800f from
 Headers:       /usr/include
 Library:       /usr/lib/libssl.so
running install
running build
running build_py
running build_ext
building '_hashlib' extension
gcc -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/include -I/usr/include/python2.4 -c Modules/_hashopenssl.c -o build/temp.
linux-sh4-2.4/Modules/_hashopenssl.o
gcc -shared build/temp.linux-sh4-2.4/Modules/_hashopenssl.o -L/usr/lib -lssl -lcrypto -o build/lib.linux-sh4-2.4/_hashlib.so
running install_lib
copying build/lib.linux-sh4-2.4/_hashlib.so -> /usr/lib/python2.4/site-packages
copying build/lib.linux-sh4-2.4/hashlib.py -> /usr/lib/python2.4/site-packages
byte-compiling /usr/lib/python2.4/site-packages/hashlib.py to hashlib.pyc

[링크 : http://trac.calendarserver.org/ticket/292]
[링크 : http://code.krypto.org/python/hashlib/] << 요기서 다운로드
Posted by 구차니
회사일/STLinux2010. 2. 23. 10:27
/opt/STM/STLinux-2.2/devkit/sh4/target/usr/bin/python
/opt/STM/STLinux-2.2/devkit/sh4/target/lib/libutil-2.5.so
/opt/STM/STLinux-2.2/devkit/sh4/target/lib/libutil.so.1 -> libutil-2.5.so
/opt/STM/STLinux-2.2/devkit/sh4/target/usr/lib/python2.4/

아.. 미리 찾아볼껄 왜 이 삽질을 했을까 ㅠ.ㅠ
Posted by 구차니
회사일/STLinux2009. 6. 26. 15:28
왜 -pg 옵션으로 프로파일링을 해놔도 gmon.out이 생성이 안되는지
혹시 sh4-linux-gcc가 잘못된 건가? 하고 생각을 했었는데 이유는 다른데 있었다.

For users interested in tuning the performance of their applications, the STLinux distribution includes two profilers - gprof and OProfile.

The standard GNU profiler, gprof, has two key limitations for embedded Linux development:

    * It will only profile a single user mode application.
    * It will only profile an entire run of that application, and requires it to exit.

Many embedded applications are never intended to exit!

[링크 : http://stlinux.com/docs/manual/howto/how_to_guide37.php]

이래서 gprof 대신에 다른 걸 언급해 놓은 거구나 ㄱ-
Posted by 구차니