【问题标题】:Building a Window exe using MinGW, Windows-7 in virtual machine在虚拟机中使用 MinGW、Windows-7 构建 Window exe
【发布时间】:2017-02-20 18:00:19
【问题描述】:

我正在使用 64 位 Windows 7,在配备 Intel 处理器的(最近的)Mac 上的 Virtual Box 机器上运行。

我已经安装了 MinGW:

gcc -dumpmachine
>>> x86_64-w64-mingw32

我正在尝试为this code 编译一个 Windows exe(用于太阳和卫星角度计算的 Landsat-8 例程):

gcc -I ias_lib -o l8_angle.exe -c l8_angle.c

在运行时不会给我任何错误或警告,并按预期创建l8_angle.exe。打开时,exe 给出:

此文件的版本与 Windows 的版本不兼容 你在跑。检查计算机的系统信息以查看 是否需要 x64(64 位)版本的 x86(32 位) 程序,然后联系软件发行商。

是否可以在我的设置上编译此程序?

如果您想知道我可以在 Mac OS 端运行 make 以获取 Linux 可执行文件,但我需要一个适用于我的生产机器的 Windows 可执行文件。

【问题讨论】:

    标签: gcc build windows-7 mingw


    【解决方案1】:

    我能够通过在两个makefiles 中回显gcc 语句来成功编译:

    @echo $(value INCS)
    

    出于某种原因,它会打印完全组装的gcc 命令。然后我确认了所选标志的作用,并发现它们都同样适用于 Windows 版本。

    构建命令是:

    cd ias_lib
    
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_angle_gen_calculate_angles_rpc.c -o ias_angle_gen_calculate_angles_rpc.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_angle_gen_read_ang.c -o ias_angle_gen_read_ang.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_angle_gen_utilities.c -o ias_angle_gen_utilities.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_angle_gen_initialize.c -o ias_angle_gen_initialize.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_angle_gen_write_image.c -o ias_angle_gen_write_image.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_angle_gen_find_scas.c -o ias_angle_gen_find_scas.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_geo_convert_dms2deg.c -o ias_geo_convert_dms2deg.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_math_compute_unit_vector.c -o ias_math_compute_unit_vector.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_math_compute_vector_length.c -o ias_math_compute_vector_length.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_math_find_line_segment_intersection.c -o ias_math_find_line_segment_intersection.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_logging.c -o ias_logging.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_misc_create_output_image_trim_lut.c -o ias_misc_create_output_image_trim_lut.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_misc_convert_to_uppercase.c -o ias_misc_convert_to_uppercase.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_misc_write_envi_header.c -o ias_misc_write_envi_header.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_odl_free_tree.c -o ias_odl_free_tree.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_odl_get_field.c -o ias_odl_get_field.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_odl_read_tree.c -o ias_odl_read_tree.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_parm_provide_help.c -o ias_parm_provide_help.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_parm_read.c -o ias_parm_read.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_parm_map_odl_type.c -o ias_parm_map_odl_type.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_parm_check_ranges.c -o ias_parm_check_ranges.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c ias_satellite_attributes.c -o ias_satellite_attributes.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c landsat8.c -o landsat8.o
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -c lablib3.c -o lablib3.o
    
    ar -r libl8ang.a ias_angle_gen_calculate_angles_rpc.o ias_angle_gen_read_ang.o ias_angle_gen_utilities.o ias_angle_gen_initialize.o ias_angle_gen_write_image.o ias_angle_gen_find_scas.o ias_geo_convert_dms2deg.o ias_math_compute_unit_vector.o ias_math_compute_vector_length.o ias_math_find_line_segment_intersection.o ias_logging.o ias_misc_create_output_image_trim_lut.o ias_misc_convert_to_uppercase.o ias_misc_write_envi_header.o ias_odl_free_tree.o ias_odl_get_field.o ias_odl_read_tree.o ias_parm_provide_help.o ias_parm_read.o ias_parm_map_odl_type.o ias_parm_check_ranges.o ias_satellite_attributes.o landsat8.o lablib3.o 
    
    cd ..
    
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -I./ias_lib/ -I./ -c -o l8_angles.o l8_angles.c
    gcc -g -Wall -O2 -march=nocona -mfpmath=sse -msse2  -I./ias_lib/ -I./ -c -o angles_api.o angles_api.c
    gcc -g -Wall -O2 -I./ias_lib/ -I./ -o l8_angles.exe ias_lib/libl8ang.a l8_angles.o angles_api.o -L./ias_lib/ -ll8ang -lm 
    

    唯一的变化是在最后一行,l8_angles.exe 而不是l8_angles。如果有人有更直接的方法,我很乐意看到它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-20
      • 2019-01-15
      • 2018-10-16
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 2013-11-10
      • 2011-02-22
      相关资源
      最近更新 更多