python 실행파일 만들기 도중 발생한 문제입니다..

minhoe1122의 이미지

[centos 6.8]python3.5 를 사용해서 프로그램을 만들어서 생성하였습니다

cx_freeze를 사용하여 실행 파일을 만들었고 실행 파일을 통하여 잘 실행이 되었습니다.
(목적은 어느 환경에서든 실행가능 하도록 하기위해서 입니다)
(위에서 말하는 환경이란 예를들어 python3.5가 설치되어 있지 않은 환경)

장비에서 사용을 하려고 실행에 필요한 파일들이 들어있는 폴더를 옮겨서 실행을 했는데
(참고로 장비의 오에스는 centos5.10(final) 입니다...)

 
./main: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by /export/home/smartnac/build/exe.linux-x86_64-3.5/libpython3.5m.so.1.0)
./main: /lib64/libc.so.6: version `GLIBC_2.6' not found (required by /export/home/smartnac/build/exe.linux-x86_64-3.5/libpython3.5m.so.1.0)
./main: /lib64/libc.so.6: version `GLIBC_2.9' not found (required by /export/home/smartnac/build/exe.linux-x86_64-3.5/libpython3.5m.so.1.0)

이러한 오류가 뜨면서 실행이 되지 않네요
GLIBC 버전이 낮아서 뜨는 오류인것은 알겠는데
환경을 건들면 안되는 서버라서 GLIBC 버전을 업그레이드 하지 않고
실행파일을 만드는 방법이 있나요... 있다면 알려주신다면 감사하겠습니다.

백연구원의 이미지

python 버전을 2.7 정도로 낮춰보는건 어떨까요?


소곤소곤

minhoe1122의 이미지

그 방법밖에 없을까요 ㅜㅜ

이민회

chadr의 이미지

centos 버전이 올라가면서 GLIBC버전이 같이 올라가서 그런것 같네요.
GLIBC는 손쉽게 업그레이드하거나 다운그레이드 하기 어렵습니다.

가능한 타겟과 맞는 os에서 빌드를 하는게 맞습니다.
파이썬과 같은 스크립트 언어가 왜 나왔는지 생각해보면 쉽게 이해되실겁니다.

혹시나 리눅스를 윈도우즈와 같이 하위호환성이 잘 될거라고 생각하시면 안됩니다.
윈도우즈야 개발툴을 돈주고 사야하고 오픈소스가 아니기 때문에 누구나 쉽게 새로 빌드해서 사용하기 어려운 환경입니다.
그래서 윈도우즈는 하위호환성을 잘 고려해주는 반면 리눅스는 무료 개발 툴과 컴파일러를 쉽게 구할 수 있기 때문에 하위호환성따위는 고려안하더라도 재빌드 하면 그만이기에 같은 리눅스 배포판이라도 버전이 올라가면 이전 버전에서 빌드된 프로그램이 잘 동작 하지 않거나 그 반대도 안되는 경우가 많습니다.

파이썬 버전을 낮추더라도 파이썬 런타임이 이미 높은 버전의 GLIBC를 사용하고 있기 때문에 효과는 없을 것으로 추측해봅니다.

어떻게 해서든 타겟과 같은 버전의 리눅스를 설치후에 거기서 빌드해서 패키지를 만드시는 편이 가장 빠를것으로 생각됩니다.
저런 의존성을 제거하기 위해서 스크립트와 같은 중간 언어로 프로그램을 만드는 것이지요.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

minhoe1122의 이미지

아.... 정말 상세한 설명 감사합니다... 무슨 뜻인지 이해가 가네요...
감사합니다!!

이민회

dist777의 이미지

잘 몰라서 여쭤봅니다.

(cx_freeze 는 아니고...)
pyinstaller --onefile 파일명
식으로 하면 의존성 문제가 없어지는 것 아닌가요?
단일파일 생성으로 관련 라이브러리를 몽땅 집어넣어도
GLIBC 의존성은 어쩔 수 없는 건지요?

chadr의 이미지

안되는 것 같습니다.

https://github.com/pyinstaller/pyinstaller/wiki/FAQ

Under Linux, I get runtime dynamic linker errors, related to libc. What should I do?

The executable that PyInstaller builds is not fully static, in that it still depends on the system libc. Under Linux, the ABI of GLIBC is backward compatible, but not forward compatible. So if you link against a newer GLIBC, you can't run the resulting executable on an older system. The supplied binary bootloader should work with older GLIBC. However, the libpython.so and other dynamic libraries still depends on the newer GLIBC. The solution is to compile the Python interpreter with its modules (and also probably bootloader) on the oldest system you have around, so that it gets linked with the oldest version of GLIBC.

-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.

댓글 달기

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