gcc binary를 Sun에 깔았는데 실행할때 에러가 나요..

wideye42의 이미지

gcc binary를 SunOS 5.8 에 pkgadd로 깔았습니다..
설명서대로 깔아서 /usr/local/bin 제대로 설치된 듯 보입니다..

확인해 보면
-----------------------------------------------------------
bash-2.03$ which gcc
LD_LIBRARY_PATH: 명령어가 없음
export: 명령어가 없음
/usr/local/bin/gcc
bash-2.03$ /usr/local/bin/gcc -v
Reading specs from /usr/local/lib/gcc/sparc-sun-solaris2.8/3.4.2/specs
Configured with: ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --disable-nls
Thread model: posix
gcc version 3.4.2
-----------------------------------------------------------

Helloworld 기본 cpp를 컴파일 하면 컴파일도 잘 되는데 a.out를 실행시키면 다음과 같은 에러가 뜨네요..
-----------------------------------------------------------
bash-2.03$ a.out
ld.so.1: a.out: 치명적: libgcc_s.so.1: 열기 실패: 해당 파일이나 디렉토리가 없음
중단됨(Killed)
-----------------------------------------------------------

Path 설정의 문제인거 같은데 제가 설정한 패스는 다음과 같습니다..
login diretory의 .cshrc 에
1. /usr/local/bin path를 추가했구요..
2. LD_LIBRARY_PATH = /usr/local/lib
export LD_LIBRARY_PATH 를 추가했습니다..

다른 더 필요한 세팅이 있나요? 아니면 다른 뭐가 잘못된게 있나요?
답변주시면 고맙겠습니다..

elien의 이미지

사용하시는 셸은 bash 인것 같습니다만 -_-;;
.bashrc, .bash_profile 에 추가해보세요

훗, 못 믿겠나?

octaphial의 이미지

csh에서는 setenv LD_LIBRARY_PATH /usr/local/lib 와 같이 해야 할 걸로 알고 있습니다. 하지만 현재 쉘은 bash이니까 윗분 말씀처럼 하는 게 맞을 수 있습니다. :)

오병현 배상

wideye42의 이미지

우선 답변 주신데 대해 감사드립니다..

1. 일단 elien 님이 답변주신대로라면..
bash shell을 쓰지 않고 실행시키면 되야하지 않을까요?
------------------------------------------------------
sun1% a.out
ld.so.1: a.out: 치명적: libgcc_s.so.1: 열기 실패: 해당 파일이나 디렉토리가 없음
중단됨(Killed)
-------------------------------------------------------
하지만 에러는 계속 납니다..
근데 .bashrc, .bash_profile 는 어느 디렉토리에 있나요?
제 디렉토리에는 다음과 같은 파일만 있고 bash는 없는데요..
--------------------------------------------------------
sun1% ls -a
. dokiun local.cshrc-bk profile-bk work05
.. .dt local.login .profile.old work06
.bash_history .dtprofile local.profile .solregis work07
bizzare .iiim .TTauthority work08
.cshrc local.cshrc .profile wideye .Xauthority
----------------------------------------------------------

2. octaphial 님이 답변주신대로 해도 실행하면 같은 에러가 발생합니다..

pynoos의 이미지

libgcc 도 설치하셔야합니다.

wideye42의 이미지

pynoos wrote:
libgcc 도 설치하셔야합니다.

라고 하셨는데 좀더 자세히 설명 부탁드립니다..제가 유닉스 초보거든요..
pkgadd 해도 libgcc를 따로 설치해야 하나요?
답변 부탁드립니다..
pynoos의 이미지

libgcc라는 패키지를 pkgadd로 설치하세요.

wideye42의 이미지

우선 답변에 감사드립니다..
그런데, libgcc 패키지를 add하려다 보니깐 usr/local/lib 에
libgcc_s.so
libgcc_s.so.1
libstdc++.a
libstdc++.la
libstdc++.so
...
등을 설치할려는 것처럼 보이는데 이미 설치되어 있거든요..
모든 파일이 제대로 설치되어 있는거 같습니다..

그럼 패스 설정이 잘못된 건가요??
제가 한 패스 설정에 잘못된 부분이 있나요?
다시 답변주시면 감사하겠습니다..

pynoos의 이미지

제가 윗분들의 글을 잘 안읽고 후다닥 답변하고 있었군요.. :(
.bashrc .bash_profile 이 없으면 만드셔야합니다.

모든것이 잘 안되면

g++ -Wl,-rpath,/usr/local/lib a.cpp 와 같은 방법으로 컴파일 해보세요.

IsExist의 이미지

$ echo $LD_LIBRARY_PATH
$ ldd a.out 

ldd 명령어로 so파일들이 제대로 찾아지는지 확인해볼 수 있습니다.

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

wideye42의 이미지

우선 답변 감사드립니다..

우선 echo $LD_LIBRARY_PATH 명령어를 쓰면

sun1% echo $LD_LIBRARY_PATH
LD_LIBRARY_PATH: 정의되지 않은 변수

다음과 같이 나오고.. ldd a.out 하면

sun1% ldd a.out
        libstdc++.so.6 =>        /usr/lib/libstdc++.so.6
        libm.so.1 =>     /usr/lib/libm.so.1
        libgcc_s.so.1 =>         (파일이 없음)
        libc.so.1 =>     /usr/lib/libc.so.1
        libgcc_s.so.1 =>         /usr/local/lib/libgcc_s.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        /usr/platform/SUNW,Sun-Blade-1500/lib/libc_psr.so.1

다음과 같이 나오는데..libgcc_s.so.1는 /usr/local/lib에 있는게 확실합니다..

그럼 path를 지정하는게 문제인거 같은데 제 home의 .cshrc의 내용은 다음과 같이 했습니다..

# @(#)cshrc 1.11 89/11/29 SMI
umask 022
set path=(/bin /usr/sbin /usr/ccs/bin /usr/bin /usr/dt/bin /usr/openwin/bin /usr
/ucb /usr/local/bin /app/SUNWspro/bin /usr/openwin/bin  .)
# set path=(/bin /usr/bin /app/SUNWspro/bin /usr/ucb /etc .)
if ( $?prompt ) then
        set history=32
endif

LD_LIBRARY_PATH = /usr/local/lib
export LD_LIBRARY_PATH

다른 곳에 뭔가를 추가해야 하나요??
답변 주시면 감사하겠습니다..

pynoos의 이미지

csh을 사용하시려면 export 를 사용하지 않고 setenv 를 윗분이 설명하신대로 설정하셔야합니다.

sio4의 이미지

wideye42 wrote:

sun1% ldd a.out
        libstdc++.so.6 =>        /usr/lib/libstdc++.so.6
        libm.so.1 =>     /usr/lib/libm.so.1
        libgcc_s.so.1 =>         (파일이 없음)
        libc.so.1 =>     /usr/lib/libc.so.1
        libgcc_s.so.1 =>         /usr/local/lib/libgcc_s.so.1
        libdl.so.1 =>    /usr/lib/libdl.so.1
        /usr/platform/SUNW,Sun-Blade-1500/lib/libc_psr.so.1

인용하신 부분을 보면, ldd 명령의 출력 3번째 줄에서는 문제의 파일을 찾지 못하고 있지만 5번째 줄에서는 찾고 있습니다. 이상해 보이는 부분인데, 아마도 전체 컴파일 명령 구문을 올려주시면 다른 분들이 답하기 쉬워질지도 모르겠습니다.

어쨌든, 개발환경 구성보다는 단순히 당장 실행되는게 문제라면 위에 설명된 rpath 지정 방식도 확인해보세요. 써보셨나요?

문제와 만난 기념으로 라이브러리 경로에 대해서 이 기회에 좀 더 알아보시는 것도 좋을 것 같습니다. 시스템 차원의 /etc/ld.so.conf, ldconfig 명령과 관련된 부분, 사용자/쉘 환경의 LD_LIBRARY_PATH에 대한 부분, 개발자/특별한 환경에서의 컴파일 과정에서의 rpath 지정의 방법 등등입니다.

wideye42 wrote:

그럼 path를 지정하는게 문제인거 같은데 제 home의 .cshrc의 내용은 다음과 같이 했습니다..

# @(#)cshrc 1.11 89/11/29 SMI
umask 022
set path=(/bin /usr/sbin /usr/ccs/bin /usr/bin /usr/dt/bin /usr/openwin/bin /usr
/ucb /usr/local/bin /app/SUNWspro/bin /usr/openwin/bin  .)
# set path=(/bin /usr/bin /app/SUNWspro/bin /usr/ucb /etc .)
if ( $?prompt ) then
        set history=32
endif

LD_LIBRARY_PATH = /usr/local/lib
export LD_LIBRARY_PATH

다시 csh로 돌아오신건가요? 환경이 얼마나 중요한지는 맹자님 어머니의 예에서 익히 알고있습니다. (t)csh 이든 (ba)sh 이든 어떤 환경을 계속해서 사용할 것인지 집고 넘어가는 것이 필요하실 것 같습니다. 일단 sunos 계열에서는 csh이 기본이니 csh 이나 tcsh을 사용하시는 것이 앞으로 편하실지 모르겠습니다.

일단 csh을 사용하신다고 보고 .cshrc를 이용하여 환경설정을 하실 것이라면 위의 마지막 두 줄은 잘못되었습니다. export는 (ba)sh의 내장 명령이며 csh에서는 유효하지 않습니다. 그 두 줄을 대신하여, 이미 어떤 분이 설명하셨듯이,

setenv LD_LIBRARY_PATH /usr/local/lib

이라고 지정하셔야 합니다. (사실, 이정도 경로는 사용자가 LD_LIBRARY_PATH로 정하기 보다는 시스템 차원에서 지정해주는 편이 좋을것이라는 생각이 듭니다.)

제가 보기엔 현재 하시려는 일이 개별 작업보다는 "환경의 구축"에 가까운것 같은데요, 아마도, 이번 기회에 프로그램의 실행환경에 대한 이해를 좀더 넓히시는 편이 문제 해결과 앞으로의 환경 구축 작업에 더욱 도움이 될 것 같습니다.

--
"The love you take is equal to the love you make." The End, by Beatles

wideye42의 이미지

답변 감사드립니다..

setenv 를 쓰니 되는군요..윗분이 올린대로 시도는 해봤었는데 export를 그냥 놔뒀던거 같네요..초보라서~

여하튼 답변 주신모든분들께 감사드립니다..
좋은하루 되세요~~

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.