Debian如何支持Fortran的图形界面
导读:Debian 上让 Fortran 拥有图形界面的可行路径 使用 GTK+ 3 + gtk-fortran(推荐):在 Debian 上安装 libgtk-3-dev 与 gtk-fortran,用 Fortran 直接调用 GTK 创建...
Debian 上让 Fortran 拥有图形界面的可行路径
- 使用 GTK+ 3 + gtk-fortran(推荐):在 Debian 上安装 libgtk-3-dev 与 gtk-fortran,用 Fortran 直接调用 GTK 创建窗口、按钮等控件,适合需要现代桌面外观与事件驱动的应用。
- 使用 FLTK + Fortran 绑定:安装 libfltk1.3-dev 与 libfltk-fortran-dev,轻量、上手快,适合中小型工具界面。
- 使用 Qt(C++)+ Fortran 互操作:Qt 官方不提供 Fortran 绑定,可通过 iso_c_binding 写 C++ 包装器,再由 Fortran 调用,适合复杂界面与跨平台需求。
- 使用 PGPLOT(科研绘图):安装 pgplot5 并启用 X Window 驱动,Fortran 直接绘图输出到屏幕或文件,适合二维科学图形。
前置条件与环境准备
- 安装基础工具链与编译器:sudo apt update & & sudo apt install -y gfortran build-essential。
- 若系统未安装图形会话,需先安装 X Window 与登录管理器(如 gdm3),再按需安装桌面环境(如 gnome):sudo apt install -y x-window-system-core gdm3 gnome,重启后进入图形登录界面。
方案一 GTK+ 3 与 gtk-fortran 示例
- 安装依赖:sudo apt install -y libgtk-3-dev gtk-fortran。
- 编译与运行:
- 示例(main.f90):
program simple_gui
use gtk, only: gtk_init, gtk_window_new, gtk_window_set_title, &
gtk_window_set_default_size, gtk_widget_show_all, gtk_main, gtk_main_quit
use gtk_sup, only: gtk_container_add, gtk_button_new_with_label
implicit none
type(c_ptr) :: window, button
call gtk_init()
window = gtk_window_new(GTK_WINDOW_TOPLEVEL)
call gtk_window_set_title(GTK_WINDOW(window), “Fortran GTK Demo”)
call gtk_window_set_default_size(GTK_WINDOW(window), 300, 200)
button = gtk_button_new_with_label(“Click Me!”)
call gtk_container_add(GTK_CONTAINER(window), button)
call g_signal_connect(button, “clicked”, c_funloc(gtk_main_quit), c_null_ptr)
call gtk_widget_show_all(window)
call gtk_main()
end program simple_gui - 命令:gfortran -o simple_gui main.f90
pkg-config --cflags --libs gtk+-3.0-lgtk-fortran & & ./simple_gui。
- 示例(main.f90):
方案二 FLTK 与 Fortran 绑定示例
- 安装依赖:sudo apt install -y libfltk1.3-dev libfltk-fortran-dev。
- 编译与运行:
- 示例(fltk_gui.f90):
program simple_gui
use fltk
implicit none
integer :: win, button
call fl_open_display(“”)
call fl_initialize()
win = fl_open_window(300, 200, “FLTK GUI”)
button = fl_add_button(100, 100, 100, 30, “Click Me”)
call fl_show_window(win)
call fl_wait()
end program simple_gui - 命令:gfortran -o fltk_gui fltk_gui.f90 -lfltk -lfltk_fortran -lX11。
- 示例(fltk_gui.f90):
方案三 Qt 与 Fortran 互操作示例
- 安装依赖:sudo apt install -y qtbase5-dev g++。
- 编译与运行:
- C++ 包装器(qt_wrapper.cpp):
#include
#include
#include
extern “C” { void create_qt_window(); }
void create_qt_window() {
QApplication app(0, nullptr);
QWidget window; window.setWindowTitle(“Fortran Qt Demo”); window.resize(300,200);
QPushButton button(“Click Me!”, & window);
QObject::connect(& button, & QPushButton::clicked, & app{ app.quit(); } );
window.show(); app.exec();
} - Fortran 调用(main.f90):
program qt_gui
use iso_c_binding; implicit none
interface; subroutine create_qt_window() bind©; end subroutine; end interface
call create_qt_window()
end program qt_gui - 命令:g++ -c qt_wrapper.cpp
pkg-config --cflags --libs Qt5Core Qt5Gui Qt5Widgets-o qt_wrapper.o & & gfortran -o qt_gui main.f90 qt_wrapper.opkg-config --cflags --libs Qt5Core Qt5Gui Qt5Widgets。
- C++ 包装器(qt_wrapper.cpp):
方案四 PGPLOT 科研绘图示例
- 安装与配置:
- 安装依赖:sudo apt install -y libx11-dev gfortran。
- 下载 pgplot5.2.tar.gz,解压后编辑 drivers.list,启用 XWDRIV(/XWINDOW、/XSERVE)等驱动;创建安装目录(如 /usr/local/pgplot),拷贝 drivers.list 至该目录。
- 在源码目录执行:sudo ./makemake . linux g77_gcc_aout;编辑生成的 Makefile,将 FCOMPL=g77 改为 FCOMPL=gfortran;执行 make & & make cpg & & make clean。
- 配置环境:export PGPLOT_DIR=/usr/local/pgplot;export PGPLOT_DEV=/Xserve。
- 编译与运行:
- 示例(demo.f):
PROGRAM SIMPLE
INTEGER I, IER, PGBEG
REAL XR(100), YR(100), XS(5), YS(5)
DATA XS/1.,2.,3.,4.,5./; DATA YS/1.,4.,9.,16.,25./
IER = PGBEG(0,‘?’,1,1)
IF (IER.NE.1) STOP
CALL PGENV(0.,10.,0.,20.,0,1)
CALL PGLAB(‘(x)’,‘(y)’,‘A Simple Graph’)
CALL PGPT(5,XS,YS,9)
DO I=1,60; XR(I)=0.1*I; YR(I)=XR(I)**2; END DO
CALL PGLINE(60,XR,YR)
CALL PGEND
END PROGRAM SIMPLE - 命令:gfortran -o demo demo.f -L/usr/local/pgplot -lpgplot -lX11 -ffree-form & & ./demo。
- 示例(demo.f):
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian如何支持Fortran的图形界面
本文地址: https://pptw.com/jishu/784778.html
