[질문] GNU M4 라이브러리를 불러 쓰고 싶습니다

angra의 이미지

안녕하세요

GNU m4를 프로그램 안에서 불러 쓰고 싶은데, 방법을 찾다가 보니
libm4.a를 프로그램 안에서 불러 사용하면 될것 같은데 혹시 이
라이브러리 사용법에 대해서 알고 계신분이나 문서 있으신분은
알려주시면 감사하겠습니다.

아니면 프로그램에서 m4 를 호출해서 사용할 수 있는 다른 방법을
알고 계신분은 알려주시면 감사하겠습니다.

그럼 미리 감사드립니다. :lol:

monpetit의 이미지

libm4.a가 시스템에 있습니까?

cdpark의 이미지

pipe로 m4를 부르면 되지 않을까요? popen 등을 통해서요.

angra의 이미지

monpetit wrote:
libm4.a가 시스템에 있습니까?

GNU m4 소스를 가져다가 컴파일하면 만들어지더군요. ^^ 문제는
이 라이브러리를 이용할 수 있는 어떤 문서도 없더군요. 그래서
소스를 분석해야하는데 소스 분석하기에는 좀 난감해서요..

angra의 이미지

cdpark wrote:
pipe로 m4를 부르면 되지 않을까요? popen 등을 통해서요.

사실 처리해야되는 데이터가 몇건 안될때는 문제가 안되지만, 데이터가
몇천만건 단위로 늘어나면 파이프 같은걸 사용하기에는 성능면에서나
효율성면에서나 좀 힘들다고 느껴져서요..

monpetit의 이미지

angra wrote:
monpetit wrote:
libm4.a가 시스템에 있습니까?

GNU m4 소스를 가져다가 컴파일하면 만들어지더군요. ^^ 문제는
이 라이브러리를 이용할 수 있는 어떤 문서도 없더군요. 그래서
소스를 분석해야하는데 소스 분석하기에는 좀 난감해서요..


흠... 약간의 오해가 있는 것 같습니다. libm4.a가 왜 패키지로는 배포가 안 되는지, 라이브러리 문서가 없는지 생각해 보셨습니까?
libm4.a는 m4의 알짜배기 기능은 하나도 들어가 있지 않습니다. m4에서 사용할 아주 기본적인, 그리고 요즘은 따로 라이브러리로 존재하는 여러 기능들을 묶어 놓은 겁니다. libm4.a를 구성하고 있는 소스 파일을 한 번 살펴 보세요. regex.c, getopt.c, xmalloc.c 등등 전부 m4의 매크로 기능과는 아무런 관계가 없습니다. 이렇게 m4 기능과는 오히려 관계 없는 함수들이기에 라이브러리로 따로 떼어놓은 겁니다. m4의 매크로 파싱, 확장 기능을 사용하시려면 libm4.a 외의 src 디렉토리에 있는 소스를 분석하셔야 합니다.
angra의 이미지

monpetit wrote:
angra wrote:
monpetit wrote:
libm4.a가 시스템에 있습니까?

GNU m4 소스를 가져다가 컴파일하면 만들어지더군요. ^^ 문제는
이 라이브러리를 이용할 수 있는 어떤 문서도 없더군요. 그래서
소스를 분석해야하는데 소스 분석하기에는 좀 난감해서요..


흠... 약간의 오해가 있는 것 같습니다. libm4.a가 왜 패키지로는 배포가 안 되는지, 라이브러리 문서가 없는지 생각해 보셨습니까?
libm4.a는 m4의 알짜배기 기능은 하나도 들어가 있지 않습니다. m4에서 사용할 아주 기본적인, 그리고 요즘은 따로 라이브러리로 존재하는 여러 기능들을 묶어 놓은 겁니다. libm4.a를 구성하고 있는 소스 파일을 한 번 살펴 보세요. regex.c, getopt.c, xmalloc.c 등등 전부 m4의 매크로 기능과는 아무런 관계가 없습니다. 이렇게 m4 기능과는 오히려 관계 없는 함수들이기에 라이브러리로 따로 떼어놓은 겁니다. m4의 매크로 파싱, 확장 기능을 사용하시려면 libm4.a 외의 src 디렉토리에 있는 소스를 분석하셔야 합니다.

그렇군요 제가 소스들을 자세히 보지 않아서 잘못된 오해를 하고 있었군요. 지적해주셔서 감사합니다.

댓글 달기

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