fegennari / 3DWorld

3D Procedural Game Engine Using OpenGL
GNU General Public License v3.0
1.15k stars 89 forks source link

Error when building on Linux #20

Closed GrimPixel closed 1 year ago

GrimPixel commented 1 year ago

I am not using Ubuntu or any Debian offspring. I use Arch Linux, so I skipped that “Install (Ubuntu):” part. Libraries with those names do not exist in Arch Linux repositories.

$ cd 3DWorld
make -j4 -k
Compiling src/3DWorld.cpp
Compiling src/ai.cpp
Compiling src/animals.cpp
Compiling src/asteroid.cpp
Compiling src/build_world.cpp
Compiling src/city_gen.cpp
Compiling src/clouds.cpp
Compiling src/cobj_bsp_tree.cpp
Compiling src/coll_cell_search.cpp
Compiling src/collision_detect.cpp
Compiling src/csg.cpp
Compiling src/destroy_cobj.cpp
/home/user/3DWorld/src/csg.cpp: In member function 'bool cube_t::cube_intersection(const cube_t&, cube_t&) const':
/home/user/3DWorld/src/csg.cpp:207:30: warning: comparison between two arrays [-Warray-compare]
  207 |                 if (res.d[0] >= res.d[1]) return 0; // no intersection
      |                     ~~~~~~~~~^~~~~~~~~~~
/home/user/3DWorld/src/csg.cpp:207:30: note: use unary '+' which decays operands to pointers or '&'component_ref' not supported by dump_decl<declaration error>['integer_cst' not supported by dump_decl<declaration error>][0] >= &'component_ref' not supported by dump_decl<declaration error>['integer_cst' not supported by dump_decl<declaration error>][0]' to compare the addresses
Compiling src/display_world.cpp
Compiling src/draw_groups.cpp
Compiling src/draw_mech.cpp
Compiling src/draw_mesh.cpp
Compiling src/draw_primitives.cpp
Compiling src/draw_shapes.cpp
Compiling src/draw_ship.cpp
Compiling src/draw_text.cpp
Compiling src/draw_utils.cpp
Compiling src/draw_world.cpp
Compiling src/dynamic_particle.cpp
Compiling src/edit_ui.cpp
Compiling src/erosion.cpp
Compiling src/explosion.cpp
Compiling src/free_obj.cpp
Compiling src/Gameplay.cpp
Compiling src/gen_buildings.cpp
Compiling src/gen_object.cpp
Compiling src/gl_ext_arb.cpp
Compiling src/glflare.cpp
Compiling src/grass.cpp
Compiling src/heightmap.cpp
Compiling src/image_io.cpp
Compiling src/intersect.cpp
Compiling src/lightmap.cpp
Compiling src/lightning.cpp
Compiling src/light_source.cpp
Compiling src/Loadlum.cpp
Compiling src/map_view.cpp
Compiling src/Math3d.cpp
Compiling src/matrix_ops.cpp
Compiling src/mesh_gen.cpp
Compiling src/mesh_intersect.cpp
Compiling src/model3d.cpp
Compiling src/modmap.cpp
Compiling src/movable_cobj.cpp
Compiling src/object_file_reader.cpp
Compiling src/objects.cpp
Compiling src/openal_wrap.cpp
/home/user/3DWorld/src/openal_wrap.cpp:26:10: fatal error: AL/alut.h: No such file or directory
   26 | #include <AL/alut.h>
      |          ^~~~~~~~~~~
compilation terminated.
make: *** [makefile:40: openal_wrap.o] Error 1
Compiling src/Physics.cpp
Compiling src/platform.cpp
Compiling src/postproc_effects.cpp
Compiling src/precipitation.cpp
Compiling src/profiler.cpp
Compiling src/quartic.cpp
Compiling src/ray_trace.cpp
Compiling src/read_3ds.cpp
Compiling src/reflections.cpp
Compiling src/scenery.cpp
Compiling src/screenshot.cpp
Compiling src/shaders.cpp
Compiling src/shadow_map.cpp
Compiling src/shadows.cpp
Compiling src/shape_line3d.cpp
Compiling src/ship_base.cpp
Compiling src/ship_config.cpp
Compiling src/ship.cpp
Compiling src/ship_intersect.cpp
Compiling src/ship_query.cpp
Compiling src/smoke.cpp
Compiling src/sm_tree.cpp
Compiling src/snow.cpp
Compiling src/sphere_materials.cpp
Compiling src/spillover.cpp
Compiling src/spray_paint.cpp
Compiling src/teleporter.cpp
Compiling src/tessellate.cpp
Compiling src/Textures.cpp
Compiling src/texture_utils.cpp
Compiling src/tiled_mesh.cpp
Compiling src/transform_obj.cpp
Compiling src/Tree.cpp
Compiling src/triListOpt.cpp
Compiling src/u_event.cpp
Compiling src/Universe_control.cpp
Compiling src/Universe.cpp
Compiling src/Universe_name.cpp
Compiling src/upsurface.cpp
Compiling src/u_ship.cpp
Compiling src/vertex_opt.cpp
Compiling src/visibility.cpp
Compiling src/voxels.cpp
Compiling src/Water.cpp
Compiling src/waypoints.cpp
Compiling src/weapon_draw.cpp
Compiling src/targa.cpp
Compiling src/assimp_wrap.cpp
Compiling src/roads.cpp
Compiling src/cars.cpp
/home/user/3DWorld/src/assimp_wrap.cpp: In member function 'void file_reader_assimp::process_mesh(const aiMesh*, const aiScene*, model_anim_t&)':
/home/user/3DWorld/src/assimp_wrap.cpp:418:50: warning: the address of 'aiMesh::mTextureCoords' will never be NULL [-Waddress]
  418 |                         if (mesh->mTextureCoords != nullptr && mesh->mTextureCoords[0] != nullptr) { // TCs are optional and default to (0,0); we only use the first of 8
      |                             ~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
In file included from /usr/include/assimp/scene.h:55,
                 from /home/user/3DWorld/src/assimp_wrap.cpp:176:
/usr/include/assimp/mesh.h:687:26: note: 'aiMesh::mTextureCoords' declared here
  687 |     C_STRUCT aiVector3D *mTextureCoords[AI_MAX_NUMBER_OF_TEXTURECOORDS];
      |                          ^~~~~~~~~~~~~~
Compiling src/pedestrians.cpp
Compiling src/texture_tile_blend.cpp
Compiling src/building_geom.cpp
Compiling src/building_lighting.cpp
Compiling src/building_floorplan.cpp
Compiling src/building_navigation.cpp
Compiling src/building_rooms.cpp
Compiling src/building_room_geom.cpp
Compiling src/building_room_obj_expand.cpp
Compiling src/building_room_item_draw.cpp
Compiling src/building_basement.cpp
Compiling src/building_attic.cpp
Compiling src/building_reflections.cpp
Compiling src/building_pictures.cpp
Compiling src/building_interact.cpp
Compiling src/building_gameplay.cpp
Compiling src/building_query.cpp
Compiling src/building_animals.cpp
Compiling src/building_animal_draw.cpp
Compiling src/building_names_signs.cpp
Compiling src/simplifier.cpp
Compiling src/city_model.cpp
Compiling src/city_building_params.cpp
Compiling src/city_objects.cpp
Compiling src/city_obj_placer.cpp
Compiling src/city_terrain.cpp
Compiling src/city_interact.cpp
make: Target 'all' not remade because of errors.
fegennari commented 1 year ago

Are you compiling with gcc? What version? I'll fix the warnings. There is only one error, the missing header file AL/alut.h. This is the header for ALUT, the OpenAL utility toolkit. I'm unfamiliar with Arch Linux, but it looks like you can download this package: https://archlinux.org/packages/extra/x86_64/freealut/

fegennari commented 1 year ago

Those two warnings should be fixed now.

GrimPixel commented 1 year ago

Thanks. The program runs now.

GrimPixel commented 1 year ago

Maybe you can add a list of Arch Linux libraries?

pacman -S openal
pacman -S freealut
pacman -S freeglut
pacman -S libpng
pacman -S glew
pacman -S glm
pacman -S zstd
pacman -S libtiff
pacman -S libjpeg-turbo
pacman -S libxrender
pacman -S libxmu
pacman -S libxi
fegennari commented 1 year ago

Thanks. I can't easily test this, but I assume it's correct. I updated the README.linux file.

GrimPixel commented 1 year ago

I found that I made a mistake: Because its default package manager “pacman” can't access Arch User Repository, other package managers like “yay” and “paru” are usually used. While they all need sudo, “pacman” requires it to be written as sudo pacman -S, while “yay” and “paru” requires it to be written as yay -S or paru -S. I forgot to add sudo.

fegennari commented 1 year ago

Thanks. I think it's enough to list the required packages. If the user is technical enough to check the project out from GitHub and build it, I'm sure they can figure out how to use the package manger.