C編譯的問題(pgplot繪圖) - Linux

Eden avatar
By Eden
at 2010-07-20T13:14

Table of Contents

是這樣的 我剛學linux不到一個月

因為我的繪圖軟體pgplot 他是屬於fortran的編譯軟體

但是要寫下程式碼時 主要他是接受fortran的編碼

但是老師希望我用C語言來試試看,我查過確實pgplot也可以用C寫

只是要再經過另一種編譯法來變成可執行檔

我在自己家目錄下的自己的資料夾中有用fortran寫下程式碼

用gfortran編譯(檔名為pgdemo1.f)

gfortran pgdemo1.f -L/usr/local/share/pgplot -lpgplot -L/usr/X11R6/lib -lX11
-lpng -lz

可以跑出可執行檔沒問題!但是是fortran的語法寫的程式

於是我試著用C寫完以後 用GCC來編譯

先打下gcc -c c-example.c 以後
會產生一個 c-example.o的檔案

可是 之後我打下

gfortran -o 123 c-example.o -lcpgplot -lpgplot -lX11 -lgcc -lm

/usr/local/lib/libpgplot.so: undefined reference to `png_set_PLTE'
/usr/local/lib/libpgplot.so: undefined reference to `png_init_io'
/usr/local/lib/libpgplot.so: undefined reference to `png_set_text'
/usr/local/lib/libpgplot.so: undefined reference to `png_set_tRNS'
/usr/local/lib/libpgplot.so: undefined reference to `png_create_info_struct'
/usr/local/lib/libpgplot.so: undefined reference to `png_write_info'
/usr/local/lib/libpgplot.so: undefined reference to `png_create_write_struct'
/usr/local/lib/libpgplot.so: undefined reference to `png_set_IHDR'
/usr/local/lib/libpgplot.so: undefined reference to `png_write_end'
/usr/local/lib/libpgplot.so: undefined reference to `png_write_row'
/usr/local/lib/libpgplot.so: undefined reference to
`png_destroy_write_struct'

我查過GOOGLE 與鳥哥的資料
我在猜是有幾個可能

1.
是不是我環境變數沒設定好?
在當前的環境下 .cshrc中 內容為

setenv PGPLOT_DIR '/usr/local/pgplot/'
setenv LD_LIBRARY_PATH /usr/local/pgplot

2.
在這套軟體的官方網站中 有說一名個叫cpgplot.h的檔案
我在想是不是我的編譯過程沒有連過去這個cpgplot.h的檔案

造成在編譯的過程中,電腦不了解我一些定義!

懇請高手指點一下問題在哪邊 十萬分感謝!

解決方法:

指令
假設是要編譯在當前目錄中pgplot_graph.c檔案
打下

gcc -Wall -O2 -c -I/usr/local/pgplot pgplot_graph.c

之後

gfortran -o pgplot_graph pgplot_graph.o -L/usr/local/pgplot/ -lcpgplot
-lpgplot -lpng -lz -L/usr/X11R6/lib -lX11 -lm -lc

即可在當前目錄下產生名為pgplot_graph的可執行檔

老實說解決了真的很高興!

但是完全不知道為什麼可以這樣解決!

--
Tags: Linux

All Comments

Liam avatar
By Liam
at 2010-07-23T12:14
#include <cpgplot.h> ?
Yuri avatar
By Yuri
at 2010-07-24T17:34
因為是錯在linker階段,其實你第2行不是在做編譯 而是在做
Liam avatar
By Liam
at 2010-07-28T23:55
linking 所以目錄給對他連到正確的lib所以就過了吧

適合ubuntu的專業剪輯軟體

Lydia avatar
By Lydia
at 2010-07-19T23:46
不知道有沒有人使用ubuntu同時也有在使用專業的剪輯軟體? 因為接下來電腦會換成ubuntu, 想先確定可以安裝哪一套在電腦裡。 現在電腦還在windows xp系統,使用的是adobe premiere pro 2.0 但很擔心會不相容,所以想問問版上大家的意見,謝謝 - ...

Eeepc 1001HA安裝問題

Charlie avatar
By Charlie
at 2010-07-19T23:26
我的Eeepc 1001HA原本是windows xp, 後來安裝ubuntu, eeebuntu都不行, 都會出現x server找不到的訊息 請問要如何修正? 謝謝 以下是電腦安裝時的錯誤訊息: x window system version 7.1.1 release date: 12 m ...

kde4 虛擬桌面

Carol avatar
By Carol
at 2010-07-19T18:14
請問 kde4 的 虛擬桌面有辦法設定哪個程式要放在哪個桌面嗎? 也就是每次一開啟,就會自動放到指定的桌面。 我有在設定裡面找過,但沒發現這個功能。 - ...

ubuntu 10.04 全螢幕問題

Harry avatar
By Harry
at 2010-07-19T16:52
要是有開啟桌面特效的話 全螢幕還是會出現上下兩個面板 要是關掉特效 就能夠正常全螢幕 請問目前能夠解決這問題嗎? - ...

關於yum安裝的問題

Valerie avatar
By Valerie
at 2010-07-19T16:43
※ 引述《nkbnkbab (TEMPO)》之銘言: : Filesystem 1K-blocks Used Available Use% Mounted on : /dev/sda2 49594228 49575456 0 100% / ...