AymenSekhri / CyanOS

Coding an operating system to keep my sanity during the quarantine.
MIT License
67 stars 8 forks source link

in ubuntu22.04LTS system how to build the project? #20

Open 0x7ffffff opened 1 year ago

0x7ffffff commented 1 year ago

@siradam7th I have tried many times and failed to build. Can you give me a complete build process?

0x7ffffff commented 1 year ago

alpha0x7f@0x7f:~/Documents/CyanOS/build$ make run [ 1%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/argument_parser.cpp.obj [ 2%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/bitmap.cpp.obj [ 3%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/buffer.cpp.obj [ 4%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/buffer_mutable_view.cpp.obj [ 5%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/buffer_view.cpp.obj [ 6%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/clib.cpp.obj [ 6%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/elfparser.cpp.obj [ 7%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/ipv4_address.cpp.obj [ 8%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/macaddress.cpp.obj [ 9%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/math.cpp.obj [ 10%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/network_algorithms.cpp.obj [ 12%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/path_view.cpp.obj [ 13%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/string.cpp.obj [ 13%] Building CXX object src/libraries/stdlib/CMakeFiles/stdlib.dir/string_view.cpp.obj [ 14%] Linking CXX static library libstdlib.a [ 14%] Built target stdlib [ 15%] Building CXX object src/libraries/systemlib/CMakeFiles/systemlib.dir/iostream/iostream.cpp.obj [ 16%] Building CXX object src/libraries/systemlib/CMakeFiles/systemlib.dir/malloc/malloc.cpp.obj [ 17%] Building CXX object src/libraries/systemlib/CMakeFiles/systemlib.dir/startup/icxxabi.cpp.obj [ 18%] Building CXX object src/libraries/systemlib/CMakeFiles/systemlib.dir/startup/startup.cpp.obj [ 19%] Building CXX object src/libraries/systemlib/CMakeFiles/systemlib.dir/systemcalls/systemcalls.cpp.obj [ 20%] Linking CXX static library libsystemlib.a [ 20%] Built target systemlib [ 21%] Building CXX object src/userspace/cat/CMakeFiles/cat.dir/main.cpp.obj [ 23%] Linking CXX executable cat [ 23%] Built target cat [ 24%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/argument_parser.cpp.obj [ 24%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/bitmap.cpp.obj [ 25%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/buffer.cpp.obj [ 26%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/buffer_mutable_view.cpp.obj [ 27%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/buffer_view.cpp.obj [ 28%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/clib.cpp.obj [ 29%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/elfparser.cpp.obj [ 30%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/ipv4_address.cpp.obj [ 31%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/macaddress.cpp.obj [ 31%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/math.cpp.obj [ 32%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/network_algorithms.cpp.obj [ 34%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/__/libraries/stdlib/path_view.cpp.obj [ 35%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir//libraries/stdlib/string.cpp.obj [ 36%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/__/libraries/stdlib/string_view.cpp.obj [ 37%] Building ASM_NASM object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/boot.asm.obj [ 38%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/context.cpp.obj [ 39%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/gdt.cpp.obj [ 39%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/idt.cpp.obj [ 40%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/isr.cpp.obj [ 41%] Building ASM_NASM object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/isr_dispatcher.asm.obj [ 42%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/paging.cpp.obj [ 43%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/pic.cpp.obj [ 45%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/spinlock.cpp.obj [ 46%] Building ASM_NASM object src/kernel/CMakeFiles/kernel.bin.dir/arch/x86/x86.asm.obj [ 46%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/boot/boot.cpp.obj [ 47%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/bus/pci.cpp.obj [ 48%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/bus/pcibase_address_register.cpp.obj [ 49%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/bus/pcidevice.cpp.obj [ 50%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/bus/pciidentification.cpp.obj [ 51%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/console/console.cpp.obj [ 52%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/debug_port/debug_port.cpp.obj [ 53%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/debug_port/logger.cpp.obj [ 53%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/device_fs.cpp.obj [ 54%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/ethernet/rtl8139.cpp.obj [ 56%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/keyboard/keyboard.cpp.obj [ 57%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/rtc/rtc.cpp.obj [ 58%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/devices/timer/pit.cpp.obj [ 59%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/domain_socket/connection.cpp.obj In file included from /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/domain_socket/connection.h:5, from /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/domain_socket/connection.cpp:1: /home/alpha0x7f/Documents/CyanOS/src/kernel/../libraries/stdlib/circular_buffer.h: In instantiation of 'void CircularBuffer::queue(U&&) [with U = unsigned char; T = char]': /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/domain_socket/connection.cpp:122:24: required from here /home/alpha0x7f/Documents/CyanOS/src/kernel/../libraries/stdlib/circular_buffer.h:133:9: warning: narrowing conversion of 'forward((* & data_to_queue))' from 'unsigned char' to 'char' [-Wnarrowing] 133 | new (&m_data[m_tail]) T{forward(data_to_queue)}; | ^~~~~~~~~~~~~~ [ 60%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/domain_socket/domain_socket.cpp.obj /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/domain_socket/domain_socket.cpp: In member function 'virtual Result DomainSocket::connect()': /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/domain_socket/domain_socket.cpp:49:1: warning: no return statement in function returning non-void [-Wreturn-type] 49 | } | ^ [ 61%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/domain_socket/domain_socket_fs.cpp.obj [ 61%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/file_description.cpp.obj [ 62%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/handles_manager.cpp.obj [ 63%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/ipsocket/ipsocket.cpp.obj /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/ipsocket/ipsocket.cpp: In function 'Result create_socket(SocketAddress, SocketProtocol, size_t)': /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/ipsocket/ipsocket.cpp:9:82: warning: unused parameter 'flags' [-Wunused-parameter] 9 | reate_socket(SocketAddress addr, SocketProtocol protocol, size_t flags) | ~^~~

[ 64%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/ipsocket/tcpsocket.cpp.obj [ 65%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/ipsocket/udpsocket.cpp.obj [ 67%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/pipes/pipe.cpp.obj In file included from /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/pipes/pipe.h:5, from /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/pipes/pipe.cpp:1: /home/alpha0x7f/Documents/CyanOS/src/kernel/../libraries/stdlib/circular_buffer.h: In instantiation of 'void CircularBuffer::queue(U&&) [with U = unsigned char; T = char]': /home/alpha0x7f/Documents/CyanOS/src/kernel/filesystem/pipes/pipe.cpp:90:17: required from here /home/alpha0x7f/Documents/CyanOS/src/kernel/../libraries/stdlib/circular_buffer.h:133:9: warning: narrowing conversion of 'forward(( & data_to_queue))' from 'unsigned char' to 'char' [-Wnarrowing] 133 | new (&m_data[m_tail]) T{forward(data_to_queue)}; | ^~~~~~~~~~~~~~ [ 68%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/pipes/pipe_fs.cpp.obj [ 68%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/process_description.cpp.obj [ 69%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/ustar/inode.cpp.obj [ 70%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/ustar/tar_fs.cpp.obj [ 71%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/filesystem/virtual_filesystem.cpp.obj [ 72%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/kernel_init.cpp.obj [ 73%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/application_layer/dns.cpp.obj /home/alpha0x7f/Documents/CyanOS/src/kernel/network/application_layer/dns.cpp: In member function 'bool DNS::test_ip(IPv4Address)': /home/alpha0x7f/Documents/CyanOS/src/kernel/network/application_layer/dns.cpp:85:31: warning: unused parameter 'ip' [-Wunused-parameter] 85 | bool DNS::test_ip(IPv4Address ip) | ~~~~^~ [ 74%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/link_layer/ethernet_network_adapter.cpp.obj [ 75%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/link_layer/network_adapter.cpp.obj [ 75%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/network.cpp.obj [ 76%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/network_layer/arp.cpp.obj [ 78%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/network_layer/icmp.cpp.obj [ 79%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/network_layer/ipv4.cpp.obj [ 80%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/transport_layer/dhcp.cpp.obj [ 81%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/transport_layer/tcp.cpp.obj /home/alpha0x7f/Documents/CyanOS/src/kernel/network/transport_layer/tcp.cpp: In member function 'u16 TCPSession::tcp_checksum(const BufferView&)': /home/alpha0x7f/Documents/CyanOS/src/kernel/network/transport_layer/tcp.cpp:454:74: warning: converting a packed 'TCPSession::PseudoIPHeader' pointer (alignment 1) to a 'const short unsigned int' pointer (alignment 2) may result in an unaligned pointer value [-Waddress-of-packed-member] 454 | auto pseudo_ipv4_array = reinterpret_cast<const u16*>(&pseudo_ip); | ^

In file included from /home/alpha0x7f/Documents/CyanOS/src/kernel/network/transport_layer/tcp.cpp:1: /home/alpha0x7f/Documents/CyanOS/src/kernel/network/transport_layer/tcp.h:48:16: note: defined here 48 | struct PseudoIPHeader { | ^~~~~~ [ 82%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/network/transport_layer/udp.cpp.obj [ 83%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/tasking/loader/elf.cpp.obj [ 83%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/tasking/loader/pe.cpp.obj [ 84%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/tasking/mutex.cpp.obj [ 85%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/tasking/process.cpp.obj [ 86%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/tasking/scheduler.cpp.obj [ 87%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/tasking/semaphore.cpp.obj [ 89%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/tasking/system_call.cpp.obj [ 90%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/tasking/thread.cpp.obj [ 90%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/tasking/wait_queue.cpp.obj [ 91%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/virtual_memory/heap.cpp.obj [ 92%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/virtual_memory/icxxabi.cpp.obj [ 93%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/virtual_memory/memory.cpp.obj [ 94%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/virtual_memory/physical.cpp.obj [ 95%] Building CXX object src/kernel/CMakeFiles/kernel.bin.dir/virtual_memory/virtual.cpp.obj [ 96%] Linking CXX executable kernel.bin /opt/cross/lib/gcc/i686-elf/12.2.0/../../../../i686-elf/bin/ld: warning: kernel.bin has a LOAD segment with RWX permissions Striping the kernel output file... [ 96%] Built target kernel.bin [ 96%] Building CXX object src/userspace/shell/CMakeFiles/shell.dir/main.cpp.obj [ 97%] Linking CXX executable shell [ 97%] Built target shell [ 97%] Building CXX object src/userspace/test_app/CMakeFiles/TestApp.dir/main.cpp.obj [ 98%] Linking CXX executable TestApp [ 98%] Built target TestApp [100%] Creating ISO file... xorriso 1.5.4 : RockRidge filesystem manipulator, libburnia project.

Drive current: -outdev 'stdio:CyanOS.iso' Media current: stdio file, overwriteable Media status : is blank Media summary: 0 sessions, 0 data blocks, 0 data, 171g free Added to ISO image: directory '/'='/tmp/grub.lX8Hhr' xorriso : UPDATE : 589 files added in 1 seconds Added to ISO image: directory '/'='/home/alpha0x7f/Documents/CyanOS/build/CyanOS_root' xorriso : UPDATE : 594 files added in 1 seconds xorriso : NOTE : Copying to System Area: 512 bytes from file '/usr/lib/grub/i386-pc/boot_hybrid.img' ISO image produced: 5967 sectors Written to medium : 5967 sectors at LBA 0 Writing to 'stdio:CyanOS.iso' completed successfully.

qemu-system-i386: -netdev user,id=u1,hostfwd=tcp::8080-:80: network backend 'user' is not compiled into this binary make[3]: [CMakeFiles/run.dir/build.make:70: CMakeFiles/run] Error 1 make[2]: [CMakeFiles/Makefile2:311: CMakeFiles/run.dir/all] Error 2 make[1]: [CMakeFiles/Makefile2:318: CMakeFiles/run.dir/rule] Error 2 make: [Makefile:164: run] Error 2

DrDub commented 10 months ago

The log you posted shows it built successfully. It is failing to launch the generated ISO because qemu-system-i386 has no user networking. Just set-up other QEMU networking mode.