簡體   English   中英

編譯Windows PostgreSQL 9.5 64位C語言函數

[英]Compiling Windows PostgreSQL 9.5 64bit C-language functions

我想在Windows上為PostgreSQL 9.5 64位創建本機C擴展。

我希望用MinGW-w64構建它們,如果可能的話,讓我的構建鏈盡可能干凈。 但我使用的是PostgreSQL的EnterpriseDB版本,而MinGW版本則崩潰了。

如果我可以在這個商業項目中使用另一個免費的編譯器也沒關系。

我知道如何使用Visual Studio 2003 Express,但由於許可證問題,這似乎不是一個解決方案。

除主要答案外

下面鏈接文章中 ,您可以讀到可以使用Mingw或Cygwin編寫C模塊,以及一些有關相同的指南。 但是我強烈反對這樣做,主要是因為下面列出的原因,並且因為該頁面提到那些Windows配置有特殊需求並且接受比大多數更輕的測試; 期望更多的構建問題發生

以下是類Unix平台的完整摘錄:

類Unix的平台

PGXS起源於類Unix系統,在那里很容易使用。 解壓縮擴展模塊存檔並在結果目錄中運行以下命令:

make PG_CONFIG=path_to_postgresql_installation/bin/pg_config make PG_CONFIG=path_to_postgresql_installation/bin/pg_config install

如果在shell中運行類型pg_config找到正確的PostgreSQL安裝,則可以省略PG_CONFIG覆蓋。 根據現有PostgreSQL安裝目錄的所有權,第二個命令通常需要root權限。 使用MinGW或Cygwin編譯器為Windows構建時,這些說明也適用。 但是,這些Windows配置有特殊需求,並且接收的測試比大多數情況要輕; 期望更多的構建問題發生。

一個常見的錯誤是在'make'之前在命令行上指定PG_CONFIG = ...,這不起作用,因為該值隨后被makefile的內部工作方式覆蓋。


重要的是要知道不同的編譯器彼此不兼容。 它們每個都有不同的運行時庫。 因此,除了用於構建您正在使用的軟件的編譯器之外,使用不同的編譯器編譯擴展是非常危險的。

Postgresql的Windows構建使用Visual Studio,與EnterpriseDB相同(據我所知)。 您將需要使用相同的編譯器來構建擴展。

(有關更多信息,請參閱: 構建和安裝PostgreSQL擴展模塊Postgres Enterprise Manager安裝指南 - EnterpriseDB(PDF)

這可以解釋為什么使用Mingw-w64編譯的擴展崩潰。

幸運的是,您可以選擇兩種解決方案:

  1. 使用Microsoft Visual Studio社區 對於個人開發者來說完全免費,但對企業有限制。 它應該為Postgresql構建編譯適當的模塊。

  2. 使用Mingw-w64或您選擇的任何其他編譯器(可能是LLVM / Clang)重建完整的Postgresql二進制文件,然后使用相同的編譯擴展。

做其中任何一項都可以幫到你。 這也適用於所有平台,語言和其他軟件。 如果要為軟件構建擴展,則需要在用於構建所用軟件的同一平台上使用相同的編譯器。

因此,如果您想在Linux上為Postgresql構建擴展,則需要相同的編譯器(可能是GCC)來構建擴展。

快樂編碼=)

@Swith為您提供了如何使用Visual Studio構建PostgreSQL擴展模塊的文檔鏈接,您可以閱讀:

使用MinGWCygwin編譯器為Windows構建時,這些說明也適用。 但是,這些Windows配置有特殊需求,並且接收的測試比大多數情況要輕; 期望更多的構建問題發生。

一個常見的錯誤是在'make'之前在命令行上指定PG_CONFIG = ...,這不起作用,因為該值隨后被makefile的內部工作方式覆蓋。

你看了嗎?

您也可以閱讀其他文檔使用MinGW構建PostgreSQL - 也許這會對您有所幫助。



如果我可以在這個商業項目中使用另一個免費的編譯器也沒關系。

您是否在wiki上檢查了C compliers列表 - 特別是,您可以檢查Cygwin編譯器 - 它在上面的文檔中提到並且它是免費的。



我知道如何使用Visual Studio 2003 Express,但由於許可證問題,這似乎不是一個解決方案。

你看到了什么樣的問題?


也許請查看@Simon Mourier建議的Visual Studio 2015社區版 (不是Express)。

Express和Community版本之間有許多不同的許可 - 我不確定細節,但據我所知,Community Edition在商業項目中的使用更靈活:

對於組織:
組織中的無限數量的用戶可以將Visual Studio社區用於以下場景:在課堂學習環境中,用於學術研究,或用於開源項目。

對於所有其他使用場景:
在非企業組織中,最多五個用戶可以使用Visual Studio社區。 在企業組織中(意味着那些擁有超過250台個人電腦或年收入超過100萬美元的企業),除了上述開源,學術研究和課堂學習環境之外,不允許使用它們。

有關詳細信息,請參閱Visual Studio社區許可條款

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM