펄 컴파일 및 실행에서 문제에 대한 질문 입니다.

cycos83의 이미지

펄을 하나도 모르는 상태에서 받은 일거리를 봤더니 펄로 작성된 소스 더군요.

지금 서비스가 되고 있는 서버에서 파일들을 가져와서 다른 서버에서 편집중 입니다.

서비스 파일이 컴파일 되어 있기 때문에 컴파일 안된 원본 소스를 찾아서 실행시켜 보면

내부에서 사용한 DBI.pm, 나 ,DB_File.pm같은 것들을 찾을수 없다고 나옵니다.

그래서 지금 현재 서비스중인 서버에서 찾아 보니 여기도 역시 DBI.pm, DB_File.pm은 없고 대신에 실행되는 파일이 있는 디렉토리에 DBI.si, 와 DB_File.so 파일이 있습니다.

지금 편집을 위해 구성된 서버에도 실행되는 파일이 있는 디렉토리에 DBI.so, DB_File.so 파일이 있습니다. 하지만 저것들을 참조 하지 않는듯 합니다.

so파일이 pm파일의 컴파일 형식이라고 해서 실행 파일도 컴파일 되어야 하나 해서 컴파일도 해봤습니다.

그리고 실행해 봤더니 '세그멘테이션 오류'가 나오더군요.

이제 여기서 부터 질문 입니다.

질문 1. 컴파일 할때 pm파일을 대신할 것으로 so파일들을 첨가해서 컴파일 하는게 가능한지요.

질문 2. '세그멘테이션 오류' 라는 것은 어떤 상황에서 나오는 것인가요. 그리고 검색을 해보면 다들 어디서 '세그멘테이션 오류'가 났는지 알고들 계시던데, 어디서 그런 오류가 났는지 확인하는 법은 뭔가요?

aero의 이미지

perlmania.or.kr에도 답글 올렸는데 여기도 올립니다.

so 파일은 pm파일이 컴파일된게 아닙니다
so 파일은 윈도우로 치면 일종의 DLL 파일로
pure perl모듈이 아닌경우 perl과 C로 만들어진 라이브러리간에
인터페이스를 제공하는 바이너리 파일입니다.
DBI.pm - DBI.so - 기타 라이브러리 이런식으로 작동하죠.

보통 모듈을 인스톨할때 자동으로 컴파일되서 같이 인스톨 됩니다.
뭐가 하나 빠져있다면 모듈을 설치할때 잘 못 하신것같네요.

설치되는 예를 보면
PERL_PATH/DBI.pm
PERL_PATH/auto/DBI/DBI.so

PERL_PATH/DB_File.pm
PERL_PATH/auto/DB_File/DB_File.so
이런식으로 쌍으로 설치됩니다.

그리고 segfault는 다양한 원인이 있는데 아마 라이브러리 버젼간에 문제로 보입니다.
정상적인 Perl모듈 인스톨과정에서는 Test과정이 있어 이러한 문제가 발생하면
제대로 인스톨 되지 않습니다. 해당 모듈 인스톨을 다시 해보시고 인스톨 과정에
문제가 있으면 해당 에러메시지를 보고 요구 조건을 맞춰 주시면 됩니다.

cycos83의 이미지

서비스 되고 있는 서버에서 제가 DBI.pm이나 DB_File.pm을 못찾은건 뭔가 놓쳤다는 거군요.

so가 pm과 통신하는 파일이라면 pm파일이 분명히 존재 해야 할테니까요.

흐음 혹시 pm자체를 포함시켜서 컴파일 해 버리거나 하는 기능은 없나요?

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.