Re: [問題] Perl & C library package

看板Perl作者 (Neisseria)時間7年前 (2016/12/16 10:33), 7年前編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《gecer (gecer)》之銘言: : 小弟安裝Perl Parse::STDF module 會出現下列錯誤訊息 : Checking for libstdf ... : ERROR: I don't see libstdf installed. : Please ensure libstdf is installed and libstdf-config is in your search path. : Get libstdf from http://freestdf.sourceforge.net/ : 查詢libstdf是 c library : http://freestdf.sourceforge.net/doxygen/ : 請問要如何安裝這個libray 以供Perl使用(電腦是windows) 剛看了一下,這個函式庫沒有提供在 Windows 下編譯的方法 雖然 INSTALL 內有提到 win32 的處理方法,但實際沒有相關檔案 稍微瀏覽一下原始碼 似乎沒有依賴外部函式庫,自己手動編譯可能有機會成功 要不然就是要嘗試在 MSYS2 環境下編譯 這個不太好搞,去 C/C++ 版問問看,或許有高手可以幫忙 要不然,可以考慮 stdf4j 這個 Java 專案 沒有用到 C,比較沒有平台上的問題 參考看看 [Update] 想不到這篇會變 m 文,小弟在這篇其實也沒講什麼 感謝版主賞光 冏rz 有版友寫信來問我這篇文章相關的問題 小弟在這裡野人獻曝一下,如果有錯請不吝指正 大部分的 Unix-like 系統,大抵上遵守 POSIX 來設計 而 Windows 系統則沒有按照 POSIX 規範設計 許多在 POSIX 系統上開發的 C 專案 拿到 Windows 下會出現以下問題: 1. POSIX toolchain 2. POSIX library 像是以下標準的 make 三部曲 $ ./configure $ make $ make install 背後就是用到 POSIX toolchain,簡化了編譯軟體的步驟 另外談到 library 的部分 只用 standard library,能做的事有限 而 POSIX library 定義了在 POSIX 系統上共通的介面 使得同一份 C 專案在不同系統間可重覆使用 而 Windows 剛好也缺乏這一塊 所以有 MinGW/MSYS2 這種專案 試圖解決這個問題 不過,使用者仍然需要了解編譯軟體的流程 對初學者來說 這個東西並不是很親和 Orz 大部分的高階語言,已經把這些東西藏起來了 如果沒有非 C/C++ 不可,找其他的高階語言來用比較簡單 像是 Java 的運行速度還不錯,如以下 benchmark: https://benchmarksgame.alioth.debian.org/u64q/java.html 雖然 Java 平台肥了點,Java 寫起來也有點囉唆 Java 的普及性還不錯,相關的資源也不少 回到原本的問題 如果只是要將 STDF 檔案轉成文字檔 弄一台虛擬機,灌個 Linux,函式庫裝一裝 然後把檔案內容倒出來,剩下的就很容易了 比起花時間在 Windows 上搞 C 相關問題 這樣子做反而比較簡單 [Update on 2017/02/25] 今天在試 Windows 10 的 Bash on Windows (beta) 雖然在裡面編譯出來的軟體不是原生的機械碼 只能在該子系統內使用 對於僅內部使用的程式來說 這樣也足夠了 如果有人需要在 Win 上裝一些 Linux 上的程式 倒是可以試一試 不保證 100% 成功 就當成另一個 Cygwin 系統就可以了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.134.251 ※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1481855611.A.39A.html ※ 編輯: Neisseria (175.182.142.8), 12/18/2016 10:21:37

12/18 10:34, , 1F
推vm
12/18 10:34, 1F

01/03 09:57, , 2F
建議也可以在cygwin中的perl 嘗試一下
01/03 09:57, 2F
※ 編輯: Neisseria (175.180.171.73), 02/25/2017 19:54:31
文章代碼(AID): #1OKr9xEQ (Perl)
文章代碼(AID): #1OKr9xEQ (Perl)