Tôi lập trình C++ ứng dụng trên (Ubuntu) Linux và biên dịch chúng tới 2 hệ điều hành: natively để Linux bằng cách sử dụng "g ++" (GNU C++) và cross-biên dịch chúng để của Windows bằng cách sử dụng "i386-mingw32-g ++" (trình biên dịch chéo MinGW C++).OpenGL + Mesa 3D + MinGW
Bây giờ, tôi đang cố gắng biên dịch các ứng dụng "OpenGL" (từ Linux sang Windows) - vì tôi cần một số tệp thư viện OpenGL.
Khi triển khai OpenGL, tôi sử dụng thư viện nguồn mở "Mesa 3D". May mắn thay, Ubuntu cung cấp thư viện mesa3d "biên dịch sẵn" (libgl1-mesa-dev và libglu1-mesa-dev) cho Linux, nhưng không may là không có thư viện biên dịch sẵn để sử dụng với trình biên dịch chéo MinGW. chúng) - vì vậy tôi "PHẢI" tự biên dịch chúng "từ nguồn" (có thể tải xuống từ trang chủ http://www.mesa3d.org).
Nhưng tôi không có ý tưởng để làm điều đó. Trong mã nguồn mesa3d, có một số tài liệu về cách xây dựng các thư viện cho một số nền tảng cụ thể - cụ thể là có tệp readme "README.MINGW32".
Nhưng chỉ trên dòng đầu tiên có một số lệnh
mingw32-make -f Makefile.mgw [OPTIONS...]
mà tôi không thể chạy vì tôi không có bất kỳ chương trình "mingw32-làm" cài đặt. Bởi các phần mềm khác, tôi đã sử dụng để xây dựng chúng với các "cổ điển"
./configure -> make -> make install
quy trình này, nhưng điều này không hoạt động trên thư viện mesa3d.
Ví dụ, tôi cũng đã cố gắng
./configure --host=i386-mingw32
và nó đã được cấu hình ok nhưng sau khi nhập
make
nó ném một số lỗi
error: #error No PIPE_SUBSYSTEM_WINDOWS_xxx subsystem defined.
và bây giờ tôi đang LOST: - (.
Vì vậy, không ai biết cách xây dựng thư viện mesa3d cho r sử dụng chúng với mingw32?
P.S .: Và dĩ nhiên, Tôi KHÔNG MUỐN để sử dụng Microsoft Visual Studio KHÔNG BAO GIỜ THÊM :-). Và tôi cũng muốn làm tất cả những thứ cần thiết để xây dựng môi trường OpenGL từ Linux và sử dụng mingw32 để biên dịch chéo. Tôi hy vọng điều đó là có thể.
P.S.2: Trên trang http://www.mesa3d.org/systems.html có văn bản sử dụng MinGW với Mesa 3D "không được dùng nữa". Tôi đang đúng cách để sử dụng nó theo cách đó?
Chỉ cần tự hỏi ... OpenGL thường được sử dụng để truy cập phần cứng tăng tốc 3D. Bằng cách sử dụng mesa trên windows, bạn sử dụng phần mềm thực thi trên windows. Đó có thực sự là điều bạn muốn không? Nếu không, bạn chỉ cần sử dụng các thư viện opengl do windows cung cấp. – Bahbar
Mục tiêu chính của tôi là "kiến trúc độc lập" khi viết mã C++ -> do đó tôi nghĩ rằng sử dụng thư viện đa nền tảng ("mesa3d" trong trường hợp này) là một cách hay để đạt được điều đó, tôi không biết, có thể tôi là sai. Vì vậy, tôi nên hiểu nó để trong "mỗi Windows" có một số "thư viện" thực hiện OpenGL và khi tôi viết một số mã OpenGL trên máy Linux của mình, tôi không cần phải phân phối bất kỳ thư viện OpenGL bổ sung nào với chương trình của tôi? Nếu có, thư viện nào là - "opengl.dll", "libopengl.lib" hoặc cái gì? – Petike
OpenGL thường được hiển thị như một phần của nền tảng. Đối với Windows, Microsoft đã vận chuyển một giao diện OpenGL (opengl.lib) trong nền tảng SDK của nó mãi mãi. Tôi không chắc chắn chính xác làm thế nào bạn đi về xây dựng .a cho mingw linker ra khỏi những người, nhưng nó chắc chắn là khác nhau từ việc sử dụng mesa. – Bahbar