컴파일 오류가 났습니다.. 도와주세요

wonjnlee의 이미지

안녕하세요.

옛 버전 커널로 동작하는 프로그램을 최신 페도라25 버전에서 돌려보려고합니다.
우선 페도라 25는 설치했구요.

필요한 라이브러리가
libfnetlink
libnetfilter_queue
openssl

이라서 세개를 각각 최신 버전으로 설치하고 있었습니다.
(configure -prefix=/usr로 맞추고 하였습니다)
그런데 openssl은 이미 페도라25에 깔려있더라구요. 그래서 openssl은 config 까지만 하고 make 하지 않았습니다. (하다가 확인했습니다)
(버전은 1.0.2j-fips 입니다)

문제는 제가 돌려보려고 하는 프로그램을 새롭게 make 했을 때 다음과 같은 오류가 발생했습니다.

gcc: error: /usr/lib/libcrypto.a : No such file or directory
gcc: error: /usr/lib/libnetfilter_queue.a : No such file or directory
gcc: error: /usr/lib/libnetfilter_queue_libipq.a : No such file or directory
gcc: error: /usr/lib/libnfnetlink.a: No such file or directory

제가 각각을 확인하였을 때, 다음과 같았습니다.
1. libcrypto.a는 아예 파일이 없었습니다. openssl이 있으면 당연히 있을거라고 생각했는데, 왜인지 모르겠습니다.
2. libnetfilter_queue.a는 없고, 대신 확장자가 la인 파일이 있었습니다. Makefile 내부에서 la로만 수정하면 되는건지 모르겠습니다.
3. libnetfilter_queue_libipq.a 파일이 없습니다. 제가 netfilter에서 찾아보니, 다음과 같이 알려주더라구요.
->libnetfilter_queue is a userspace library providing an API to packets that have been queued by the kernel packet filter. It is is part of a system that deprecates the old ip_queue / libipq mechanism.
그렇다면, libipq는 따로 설치하지 않아도 된다는 말인가요? 그러면 Makefile 내부에서 이 부분을 참조하라는 문구를 지우기만 하면 될까요?
4. libnfnetlink.a 파일은 없지만, 2번과 동일하게 la 확장자로 된 동일한 파일명을 가진 파일은 있었습니다. 이것도 Makefile 내부에서 la 확장자로 수정하면 되는건지 모르겠습니다.

여러가지를 한번에 여쭤봐서 죄송합니다.
리눅스에 대한 지식이 많이 부족하네요... 부디 도움 부탁드리겠습니다.ㅠ

김정균의 이미지

일단, .a 파일을 찾는 것을 보니, Makefile에서 .a 파일을 직접 기록한 것 같네요.

요즘의 배포본들은 대부분 static library를 패키지에 포함시키지 않고 있습니다. 그러므로, Makefile에서 일단, /path/libxxx.a 라고 되어 있는 부분을 -lxxx 정도로 수정해 보세요. (동일한 경로에 libxxx.a 대신 libxxx.so가 있을 경우 입니다. 만약 libxxx.so 도 없다면, 해당 library가 존재하지 않는 것입니다.)

wonjnlee의 이미지

답변 너무 감사드립니다
그런데 -lxxx 가 정확히 무슨 말씀이신지 모르겠습니다.
libxxx.a -> lxxx로 하라는 말씀이신가요?

김정균의 이미지

-l은 gcc에서 library를 link하는 옵션 입니다. 그리고 보통 library는 libNAME.so(dynamic) 또는 libNAME.a(static)의 파일 이름을 가지는데, -l옵션으로 해당 라이브러리를 link할 때는 library NAME만 사용하면 됩니다. (-lNAME)

즉,

[user@hist ~]$ gcc mysoruce.c /usr/lib64/libcrypt.a

와 같이 하고 있다면,

[user@hist ~]$ gcc mysoruce.c -lcrypt

와 같이 수정해 보라는 의미 입니다.

chocokeki의 이미지

la파일에 관해서는 kldp 라는 사이트에 이런게 있네요
좋은 사이트인 것 같습니다
https://kldp.org/node/22493

openssl 빌드 후에 인스톨을 해보시면 아시겠지만 얘도 버전에 따라서 디렉토리랑 파일이름 바뀐게 좀 있습니다
골까는데요 Makefile을 직접 분석해서 뭐가 어디로 갔는지 찾는 것도 도움이 되실껍니다
예를 들어 페도라 구버전 패키지에는 openssl 인스톨 경로 설정이 공식홈페이지 소스랑 다르다던지(당연한건가요?)

정확히 기억이 안나는데 한 번 임시 디렉토리로 설치 경로 잡고 빌드 후 인스톨 해보세요
그 다음 그 임시디렉토리에서 어떻게 설치되나 구조 보시는 것도 좋아요
저도 예전에 삽질했던 기억이 나서리 ㅎㅎㅎ

댓글 달기

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