2013-01-19 25 views
1

隨着help of SO community我成功運行我的第一個基於MySQL的C++文件。現在下一步是在Apache上作爲CGI文件運行。在Apache它給500內部服務器錯誤,並在服務器日誌中我得到以下幾點:運行基於Netbeans的編譯C++程序作爲CGI給出權限錯誤

Sat Jan 19 12:18:18 2013] [notice] caught SIGTERM, shutting down 
[Sat Jan 19 12:18:23 2013] [notice] Digest: generating secret for digest authentication ... 
[Sat Jan 19 12:18:23 2013] [notice] Digest: done 
[Sat Jan 19 12:18:23 2013] [notice] Apache/2.0.63 (Unix) PHP/5.3.2 DAV/2 configured -- resuming normal operations 
[Sat Jan 19 12:18:51 2013] [error] [client 127.0.0.1] Premature end of script headers: addproduct.cgi 

我執行以下步驟

1 - 我在用的NetBeans產生debug文件夾中去,並重新命名addproduct.o文件addProduct命令cgi的

2-在/ myappfolder/

我的文件使用MySQL的庫和Boost的htdocs複製它,我想我由於同樣的原因,得到錯誤。我願意知道如何鏈接包括libs以及CGI?

低於C++代碼,並配合走來的MySQL連接器/ C++

更新:與路徑擺弄之後,我現在得到以下錯誤:

inventory dyld: Library not loaded: libmysqlcppconn.6.dylib
Referenced from: /Applications/MAMP/htdocs/inventory/Inventory/dist/Debug/GNU-MacOSX/./inventory Reason: image not found Trace/BPT trap http://pastie.org/5723836

otool提供了以下info:

otool -LMV inventory

inventory: 
    libmysqlcppconn.6.dylib (compatibility version 6.0.0, current version 6.1.1) 
    time stamp 2 Thu Jan 1 05:00:02 1970 
    /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.9.0) 
    time stamp 2 Thu Jan 1 05:00:02 1970 
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.11) 

回答

1

看起來您正在使用錯誤的文件。 .o文件是編譯結果但尚未鏈接的目標文件。我希望NetBeans也生成了一個名爲addproduct的文件,沒有任何擴展名。這是你的可執行文件,可以被apache調用。

PS如果您認真對待C++和CGI,您可能需要查看fastcgi

+0

這是一個原型,所以我會堅持使用普通的舊CGI。我認爲你是對的,我連接錯誤的文件。但問題的其他部分,它將如何檢測包含頭文件和庫文件?由於我沒有製作安裝程序,所以我會以某種方式將它們連接起來。 – Volatil3

+0

從命令行運行:我得到錯誤* ./inventory dyld:庫未加載:libmysqlcppconn.6.dylib 引用自:/ Applications/MAMP/htdocs/inventory/Inventory/dist/Debug/GNU-MacOSX /。/inventory 原因是:image not found Trace/BPT trap * – Volatil3