우분투에서 insight 소스를 받아서 컴파일 하는데 에러를 뱉어낸다 ㄱ-

WARNING: `makeinfo' is missing on your system.  You should only need it if
         you modified a `.texi' or `.texinfo' file, or any other file
         indirectly affecting the aspect of the manual.  The spurious
         call might also be the consequence of using a buggy `make' (AIX,
         DU, IRIX).  You might want to install the `Texinfo' package or
         the `GNU make' package.  Grab either from any GNU archive site.

$ makeinfo
'makeinfo' 프로그램은 현재 설치되어 있지 않습니다.  다음을 입력하여 이를 설치할 수 있습니다:
sudo apt-get install texinfo
머.. texinfo 패지키를 깔면 해결된다.

그리고, make distcelan 이후 다시 configure를 하고 해주니, 요런 에러가 발생한다.
configure: error: no termcap library found
이녀석은 libncurses5-dev 패키지를 설치하면 해결된다.
[링크 : http://leoric99.tistory.com/entry/Ubuntutermcap-라이브러리-해결-방법]

그런데.. 이 에러는 도대체 어떻게 잡아야 하나...
gcc -c -g -O2   -I. -I.././gdb -I.././gdb/config -DLOCALEDIR="\"/usr/local/share/locale\"" -DHAVE_CONFIG_H -I.././gdb/../include/opcode -I.././gdb/../readline/.. -I../bfd -I.././gdb/../bfd -I.././gdb/../include -I../libdecnumber -I.././gdb/../libdecnumber   -DMI_OUT=1 -DGDBTK -DTUI=1  -Wall -Wdeclaration-after-statement -Wpointer-arith -Wformat-nonliteral -Wno-pointer-sign -Wno-unused -Wno-switch -Wno-char-subscripts -Werror linux-nat.c
cc1: warnings being treated as errors
linux-nat.c: In function ‘linux_nat_info_proc_cmd’:
linux-nat.c:2879: error: ignoring return value of ‘fgets’, declared with attribute warn_unused_result
gdb/Makefile 에서 -Werror 부분을 주석처리 해준다.

WARNING: `bison' missing on your system.  You should only need it if
         you modified a `.y' file.  You may need the `Bison' package
         in order for those modifications to take effect.  You can get
         `Bison' from any GNU archive site.
머.. bison 패키지를 깔면 해결된다.

ada-lex.c missing and flex not available.
... 정말로 파일이 없다.
일단 flex 패키지를 설치해준다.
[링크 : http://kldp.org/node/55249]

그런데.. 또 클린하고 해도..
gcc -g -O2      \
                -o gdb gdb.o libgdb.a \
                   ../readline/libreadline.a ../opcodes/libopcodes.a ../bfd/libbfd.a  ../libiberty/libiberty.a ../libdecnumber/libdecnumber.a    ../libgui/src/libgui.a -L/home/morpheuz/src/insight/itcl/itcl -litcl3.2 -L/home/morpheuz/src/insight/itcl/itk -litk3.2 -L/home/morpheuz/src/insight/tk/unix -ltk8.4 -Wl,-rpath,/usr/local/lib -L/home/morpheuz/src/insight/tcl/unix -ltcl8.4   -lX11 -ldl  -lieee -lm -lncurses -lm   ../libiberty/libiberty.a  -ldl -rdynamic
libgdb.a(ada-lang.o): In function `parse':
/home/morpheuz/src/insight/gdb/ada-lang.c:10972: undefined reference to `ada_parse'
libgdb.a(ada-lang.o):(.rodata+0xda0): undefined reference to `ada_error'

... ada 가 날 열받게 하는구나~ ㄱ-
아놔 안해안해 ㄱ-


+
2016.08.29
[링크 : http://decdream.tistory.com/370] 이분은 성공하셨네 ㅠㅠ


'프로그램 사용 > gdb & insight' 카테고리의 다른 글

gdb break  (0) 2021.04.09
gdb/insight target window  (0) 2010.05.19
gdb / gdbserver 접속명령어  (0) 2010.05.18
insight(gdb) 아키텍쳐별 차이점(?)  (0) 2010.05.18
gdb cross compile 관련  (0) 2010.05.18
Posted by 구차니
머.. 대충 번역을 해보지만, 어떤 의미인지 좀 모호하다.
한글판에서는 영문판에는 존재하지 않는, WinXP와 Win98 간의 바이너리 호환성을 ABI라고 하는 부분이 추가되어 있다.
일단 결과론적으로 바이너리 파일이 특정 하드웨어에 종속적이거나.
모든 하드웨어 플랫폼을 포괄하는 특정 파일포맷을 통해, 라이브러리 종속성만 해결한다면
cross-compile이나 Virtual Machine을 통하지 않고, 바이너리 레벨에서 호환성을 제공하여
"Write Once, Run Everywhere" 를 이룰수 있다.

그러고 보니.. win98의 프로그램이 winXP에서 작동되는건
단순히 PE 포맷을 따르는 것 뿐만 아니라, 동일 Intel 계열이기 때문인 영향도 있는 건가?

ABI는 변수의 크기, 메모리 정렬, 스택에 넣는 순서(calling convention), 시스템 콜의 번호, 그리고 완전한 OS ABI의 경우 목적파일의 이진포맷, 프로그램 라이브러리 등을 포괄한다. 예를 들어 인텔 이진 호환 표준(iBCS) 와 같은 완전한 ABI에서는
ABI를 지원하는 하나의 운영체제에서 그러한 다른 시스템으로 공유 라이브러가 존재하고 이와 비슷한 선결조건을 충족시킨다면 어떠한 수정도 가하지 않고 실행될수 있다.

다른 ABI들은 컴파일러와 동일 플랫폼에서 사이의 C++ 이름 맹글링, 예외 전파, 그리고 스택에 넣는 순서(calling convention)과 같은 것들을 표준화 하였지만, 교차 플랫폼 호환성을 요구하지 않는다.

ABI는 호출할 루틴의 라이브러리를 정의하고, 자료구조를 조작하고, (종종 언어에 특화된) 특정 API를 사용하는 프로그램의 작성에 사용되는 오프젝트 클래스와 같은 API(Application Programming Interface)와는 혼동해서는 안된다.

ABIs cover details such as data type, size, and alignment; the calling convention, which controls how functions' arguments are passed and return values retrieved; the system call numbers and how an application should make system calls to the operating system; and in the case of a complete operating system ABI, the binary format of object files, program libraries and so on. A complete ABI, such as the Intel Binary Compatibility Standard (iBCS),[1] allows a program from one operating system supporting that ABI to run without modifications on any other such system, provided that necessary shared libraries are present, and similar prerequisites are fulfilled.

Other ABIs standardize details such as the C++ name mangling,[2] exception propagation,[3] and calling convention between compilers on the same platform, but do not require cross-platform compatibility.

An ABI should not be confused with an application programming interface (API) which defines a library of routines to call, data structures to manipulate, and/or object classes to use in the construction of an application using that particular (often language specific) API.


[링크 : http://en.wikipedia.org/wiki/Application_binary_interface]

ABI는 소프트웨어 개발시 많은 장점을 가지고 있다. 예를 들면 마이크로소프트윈 도 98에서 사용되던 응용 프로그램이 윈 도 XP와 호환되는 것은 마이크로소프트가 ABI를 지원하기 때문이다. 유닉스 계통리눅스, BSD(FreeBSD/OpenBSD/NetBSD)에서 도 ABI를 제공하고 하지만 아직 완벽하다고 할 수는 없다.

[링크 : http://ko.wikipedia.org /wiki/응용_프로그램_2진_인터페이스]


'이론 관련 > 컴퓨터 관련' 카테고리의 다른 글

VLIW - Very Long Instruction Word  (0) 2013.10.08
펜타일(Pentile) 방식 디스플레이  (2) 2011.10.15
EFI 와 BIOS  (0) 2011.07.22
KiB / MiB  (0) 2011.07.22
GPS / A-GPS / S-GPS / D-GPS  (2) 2010.10.23
Posted by 구차니
gdbserver는 gdb를 돌릴만한 사정이 안되는 시스템을 위한 프로그램으로
단순하게 gdb의 앞단에서 데이터를 TCP나 시리얼 등으로 전송해 주는 역활을 한다.
그런 이유로 gdbserver 만으로는 아무런 것도 할수 없으며

크로스 컴파일 환경이라면, 내부적으로 크로스 환경에 맞추어진 gdb가 별도로 존재해야 한다.
gdbserver는 아래와 같이 host:port 식으로 선언을 하는데 현재까지는 host는 무시를 하고 port만을 받아들인다고 한다.

To use a TCP connection instead of a serial line:

     target> gdbserver host:2345 emacs foo.txt

The only difference from the previous example is the first argument, specifying that you are communicating with the host gdb via TCP. The `host:2345' argument means that gdbserver is to expect a TCP connection from machine `host' to local TCP port 2345. (Currently, the `host' part is ignored.)

[링크 : http://sourceware.org/gdb/current/onlinedocs/gdb/Server.html#Server]

그리고 gdb 쪽에서는 target remote 라는 명령어를 통해 접속이 가능하며, 기본값으로는 TCP로 접속하도록 되어있다.

target remote host:port
target remote tcp:host:port
    Debug using a TCP connection to port on host. The host may be either a host name or a numeric IP address; port must be a decimal number. The host could be the target machine itself, if it is directly connected to the net, or it might be a terminal server which in turn has a serial line to the target.

target remote udp:host:port
    Debug using UDP packets to port on host. For example, to connect to UDP port 2828 on a terminal server named manyfarms:
              target remote udp:manyfarms:2828
    When using a UDP connection for remote debugging, you should keep in mind that the `U' stands for “Unreliable”. UDP can silently drop packets on busy or unreliable networks, which will cause havoc with your debugging session.

[링크 : http://sourceware.org/gdb/current/onlinedocs/gdb/Connecting.html#Connecting]


음.. 그런데 gdb/insight 에서 보이는
GDBserver/TCP , remote/TCP는 멀까?
Posted by 구차니
테스트 환경
SH4 target board / i686 linux machine

아래의 화면은
./configure --build=i686-linux --host=i686-linux --target=sh4-linux
옵션으로 크로스컴파일된 insight의 Run 메뉴화면이다.


아래의 화면은
./configure
옵션으로 i686용으로 컴파일된 insight의 Run 메뉴화면이다.


음.. 크로스 컴파일 된녀석만 메뉴상에 별도로 Connect to target이 생기고
로컬용으로 컴파일 된녀석은 메뉴상에 Attach to process가 생기는 것으로 보인다.


About GDB 다이얼로그 차이점

<< sh4 , i686 >>
About 다이얼로그의 내용은 gdb 에서 show version으로 나오는 정보이며

가장 아래줄의
This GDB was configured as "i686-pc-linux-gnu".
This GDB was configured as "--host=i686-linux --target=sh4-linux".
만 다르게 나온다.


Attach to Process 메뉴화면

Posted by 구차니
검색을 해보니, arm 용으로 크로스 컴파일 하는 문서가 있다.

# ./configure --build=i686-linux --host=arm-linux --target=arm-linux --prefix=/nfsroot/gdb
# ./configure --build=i686-linux --host=i686-linux --target=arm-linux --prefix=$PWD/build
[링크 : http://blog.daum.net/joell/11772014]

일단 gdb는 두번을 컴파일 해야 한다.
target 에서 native 하게 돌아갈 gdb와 (위)
host 에서 target architecture에 맞추어 돌아갈 gdb. (아래)

그리고 prefix 경로는 /usr 을 넣어주는게 좋을듯 하다. (설치를 하면서 보니 prefix가 usr 경로를 의미하는 것으로 보인다)

--- gdb/gdbserver
# ./configure --build=i686-linux --host=sh4-linux --target=sh4-linux --prefix=/home/morpheuz/st7109/target
# make
# make install
n=`echo gdbserver | sed 's,^,sh4-linux-,'`; \
        if [ x$n = x ]; then n=gdbserver; else true; fi; \
        /bin/sh ./../../mkinstalldirs /home/morpheuz/st7109/target/bin; \
        /usr/bin/install -c gdbserver /home/morpheuz/st7109/target/bin/$n; \
        /bin/sh ./../../mkinstalldirs /home/morpheuz/st7109/target/man/man1; \
        /usr/bin/install -c -m 644 ./gdbserver.1 /home/morpheuz/st7109/target/man/man1/$n.1

Posted by 구차니
드물게(?) 크로스컴파일을 시도하려다 다시 지우고 컴파일을 하려고 하면 안되는 경우가 있다.
아래는 gdb/insight의 경우인데, 특이하게도 하라는대로 해도 안된다. ㄱ-

configure: loading cache ./config.cache
configure: error: `target_alias' has changed since the previous run:
configure:   former value:  sh4-linux
configure:   current value: i686-pc-linux-gnu
configure: error: changes in the environment can compromise the build
configure: error: run `make distclean' and/or `rm ./config.cache' and start over

이녀석은 make distclean 해도 하위 디렉토리의 config.cache를 개별로 지우지 않기 때문이다.
(음... 알려줘서 원 소스에 넣도록 해야하나?)

미봉책으로는
# make distclean
# find ./ -name config.cache -exec {} \;
를 하면 하위 디렉토리에서 config.cache를 찾아 지우므로 해결된다.

'프로그램 사용 > make, configure' 카테고리의 다른 글

make를 조용하게  (0) 2014.09.12
cmake 사용  (0) 2011.10.07
cmake - cross make  (0) 2010.04.06
makefile 에서 컴파일할 목록 생성하기  (0) 2010.04.03
makefile 정렬하기  (2) 2010.03.31
Posted by 구차니
조건상으로는 이래저래 중급기술자이다.
기사 자격증을 취득했고(졸업하면서) 일한지 4년이 되어가니 말이다.
중급기술자의 경우 하루에 19만 248원이 기준 단가라고 한다.
시간당 7927원(일=24시간) 으로 계산이 되는군.

근데.. 이거대로 받는 사람이 과연 얼마나 될까?
이표대로만 받으면 완전 부자되겠네 ㄱ-


[링크 : http://www.sw.or.kr/notice/view.asp?masteridx=1&idx=3940]



[링크 : http://www.sw.or.kr/pds/view.asp?idx=4481&masteridx=27]

Posted by 구차니
30년전 광주에서 5.18이 있었다.

이제와서는 누가 나쁜놈인지 누가 착한넘인지 조차 모호하게 되어

결국은 남 등쳐먹는데 당연하고,
사기치는게 부자되는 지름길이 된 현재의 대한민국에서
잊혀져버린. 그리고 잊혀져야 하는 과거가 되어버린 이야기

[링크 : http://cartoon.media.daum.net/series/list/kangfull26] << 강풀 26년




결론 : 6. 2일 선거하러 갑시다! 꼭!
Posted by 구차니
어제하루 세계적으로나 (한국)사회적으로나 시끌벅적한 기사들만 나왔다.
세계적인거야 그렇다손 치더라도.. 이런 시기에 이런 기사들이 쏟아지는건.. 6월 2일 선거와는 아무런 연관이 없는걸까?


경희대 패륜녀(?) 사건
[링크 : http://media.daum.net/primary/total/view.html?cateid=100044&newsid=20100517225207629&p=newsis]
[링크 : http://media.daum.net/primary/total/view.html?cateid=100044&newsid=20100517160914285&p=yonhap]

보은을 배신으로 - 돌봐준 은인 딸 성폭행
[링크 : http://media.daum.net/society/others/view.html?cateid=1067&newsid=20100517123203998&p=yonhap]

친딸 성폭행
[링크 : http://media.daum.net/society/affair/view.html?cateid=1010&newsid=20100517101807542&p=nocut]

천안함. 증거는 없으나 정황상 북한의 소행
[링크 : http://tvnews.media.daum.net/cp/imbc/view.html?cateid=100000&cpid=98&newsid=20100517221218760&p=imbc]
[링크 : http://media.daum.net/politics/others/view.html?cateid=1020&newsid=20100517182730096&p=khan]



파국으로 치닫는 태국
[링크 : http://media.daum.net/foreign/view.html?cateid=1046&newsid=20100517184210202&p=kukminilbo]

원유 차단 실패
[링크 : http://media.daum.net/primary/total/view.html?cateid=100044&newsid=20100517164329275&p=seouleconomy]


Posted by 구차니
후보들 검색해볼려고 들어갔더니 선거구라는 생소한 게 나왔다.
결론 : 악! 선거구 왜케 복잡해!!!! ㅠ.ㅠ


서울시 교육의원의 선거구 명칭 및 선거구역

선거구명

관할위원회명

선거구역

서울특별시제1선거구

종로구선거관리위원회

종로구, 중구, 강북구, 성북구

서울특별시제2선거구

마포구선거관리위원회

은평구, 용산구, 서대문구, 마포구

서울특별시제3선거구

도봉구선거관리위원회

도봉구, 노원구, 중랑구

서울특별시제4선거구

동대문구선거관리위원회

성동구, 광진구, 동대문구

서울특별시제5선거구

양천구선거관리위원회

양천구, 강서구, 영등포구

서울특별시제6선거구

관악구선거관리위원회

구로구, 금천구, 관악구

서울특별시제7선거구

서초구선거관리위원회

동작구, 서초구, 강남구

서울특별시제8선거구

강동구선거관리위원회

송파구, 강동구

원문출처 조사필요
[링크 : http://cafe.daum.net/cleanROK/IYXT/383] 서울특별시 교육의원 선거구

[링크 : http://epol.nec.go.kr/information/status.jsp] 선거구 명단(중선관위)
[링크 : http://info.nec.go.kr/main/showDocument.xhtml] 후보자 명부
Posted by 구차니