QNX下使用fortran计算库

###1.基本思路
利用f2c 将fortran源码转换为C,再利用QCC编译。

###2.f2c
<1>f2c编译后文件需要链接libf2c.a
因此需要在QNX下完成f2c编译
大致步骤

setenv INSTALL /usr/local
curl "http://netlib.sandia.gov/cgi-bin/netlib/netlibfiles.tar?filename=netlib/f2c" -o "f2c.tar"
tar -xvf f2c.tar
gunzip -rf f2c/*
cd f2c
mkdir libf2c
mv libf2c.zip libf2c
cd libf2c
unzip libf2c.zip
cp makefile.u Makefile
make
cp f2c.h $INSTALL/include
cp libf2c.a $INSTALL/lib

其中以上中,需把makefile中的CC 和LD改成QNX编译器与链接器路径。
重点是拿到QNX 版本的 libf2c.a 与 f2c.h

补充:在移植到arm时发现,在主机交叉编译失败是因为make会生成一个中间程序a.out用来生成arith.h文件。
由于a.out是目标机的可执行格式,所以交叉编译到这里就会失败。此时可以把a.out拷贝到目标机,手动运行得到arith.h文件后,在复制回来,把makefile里执行a.out语句屏蔽掉,继续运行make

<2>翻译fortran
在包含fortran源码路径下:

$ f2c -P -A -a -c -r8 *.f
$ f2c -PAacr8 *.f

以上两种路径等价,此处的f2c直接使用ununtu版本的即可。其中生成的.P文件即为头文件。可以改为.h。

<3>编译计算库
此时按照通常QNX静态库的编译方法,把<2>中生成的源码加入库中,并链接 libf2c.a 与 f2c.h。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的 QNX Screen 使用范例,用于创建一个窗口并显示一段文本: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <screen/screen.h> int main(int argc, char **argv) { // 创建屏幕上下文 screen_context_t context; screen_create_context(&context, 0); // 创建屏幕窗口 screen_window_t window; screen_create_window(&window, context); // 设置窗口大小和位置 int size[2] = {640, 480}; int pos[2] = {0, 0}; screen_set_window_property_iv(window, SCREEN_PROPERTY_SIZE, size); screen_set_window_property_iv(window, SCREEN_PROPERTY_POSITION, pos); // 将窗口提交到屏幕显示 screen_post_window(window, context, 0); // 显示文本 char *text = "Hello, QNX Screen!"; int len = strlen(text); int font_size = 24; int text_color[4] = {255, 255, 255, 255}; int bg_color[4] = {0, 0, 0, 255}; int text_pos[2] = {100, 100}; screen_buffer_t buf; screen_create_window_buffers(window, 1); screen_get_window_property_pv(window, SCREEN_PROPERTY_RENDER_BUFFERS, (void **)&buf); screen_fill(ctx, buf, bg_color); screen_draw_text(ctx, buf, text, len, text_pos[0], text_pos[1], SCREEN_TEXT_ALIGNMENT_LEFT, font_size, text_color); // 将绘制的内容提交到屏幕显示 int rect[4] = {0, 0, size[0], size[1]}; screen_post_window(window, buf, 1, rect, 0); // 等待用户输入 getchar(); // 销毁窗口和上下文 screen_destroy_window(window); screen_destroy_context(context); return 0; } ``` 以上代码中,首先使用 `screen_create_context()` 函数创建一个屏幕上下文,然后使用 `screen_create_window()` 函数创建一个窗口,并设置窗口大小和位置。接下来,使用 `screen_post_window()` 函数将窗口提交到屏幕显示。 然后,使用 `screen_draw_text()` 函数在窗口中绘制一段文本,并使用 `screen_post_window()` 函数将绘制的内容提交到屏幕显示。最后,使用 `getchar()` 函数等待用户输入,销毁窗口和上下文后返回。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值