Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

file not found on Ubuntu #1

Closed
thejoshwolfe opened this issue Nov 26, 2015 · 0 comments
Closed

file not found on Ubuntu #1

thejoshwolfe opened this issue Nov 26, 2015 · 0 comments

Comments

@thejoshwolfe
Copy link
Contributor

josh@jash:~/dev/zig$ mkdir build
josh@jash:~/dev/zig$ cd build
josh@jash:~/dev/zig/build$ cmake ..
-- The CXX compiler identification is GNU 5.2.1
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
Configuring zig version 0.0.0
-- Found LLVM: -lLLVMLTO -lLLVMObjCARCOpts -lLLVMLinker -lLLVMBitWriter -lLLVMIRReader -lLLVMBPFCodeGen -lLLVMBPFDesc -lLLVMBPFInfo -lLLVMBPFAsmPrinter -lLLVMAMDGPUCodeGen -lLLVMAMDGPUAsmParser -lLLVMAMDGPUUtils -lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUAsmPrinter -lLLVMSystemZDisassembler -lLLVMSystemZCodeGen -lLLVMSystemZAsmParser -lLLVMSystemZDesc -lLLVMSystemZInfo -lLLVMSystemZAsmPrinter -lLLVMHexagonDisassembler -lLLVMHexagonCodeGen -lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMCppBackendCodeGen -lLLVMCppBackendInfo -lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMXCoreAsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMAArch64Disassembler -lLLVMAArch64CodeGen -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMAArch64Utils -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser -lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMPowerPCAsmPrinter -lLLVMSparcDisassembler -lLLVMSparcCodeGen -lLLVMSparcAsmParser -lLLVMSparcDesc -lLLVMSparcInfo -lLLVMSparcAsmPrinter -lLLVMMIRParser -lLLVMAsmParser -lLLVMLibDriver -lLLVMOption -lLLVMDebugInfoPDB -lLLVMTableGen -lLLVMOrcJIT -lLLVMLineEditor -lLLVMX86Disassembler -lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMDebugInfoDWARF -lLLVMPasses -lLLVMipo -lLLVMVectorize -lLLVMInterpreter -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMInstCombine -lLLVMInstrumentation -lLLVMTransformUtils -lLLVMipa -lLLVMMC -lLLVMAnalysis -lLLVMCore -lLLVMSupport;-lz -lpthread -lffi -ledit -ltinfo -ldl -lm  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/josh/dev/zig/build
josh@jash:~/dev/zig/build$ make
Scanning dependencies of target run_tests
[  7%] Building CXX object CMakeFiles/run_tests.dir/src/buffer.cpp.o
[ 15%] Building CXX object CMakeFiles/run_tests.dir/src/util.cpp.o
[ 23%] Building CXX object CMakeFiles/run_tests.dir/src/os.cpp.o
[ 30%] Building CXX object CMakeFiles/run_tests.dir/test/standalone.cpp.o
Linking CXX executable run_tests
[ 30%] Built target run_tests
Scanning dependencies of target zig
[ 38%] Building CXX object CMakeFiles/zig.dir/src/buffer.cpp.o
[ 46%] Building CXX object CMakeFiles/zig.dir/src/error.cpp.o
[ 53%] Building CXX object CMakeFiles/zig.dir/src/main.cpp.o
[ 61%] Building CXX object CMakeFiles/zig.dir/src/parser.cpp.o
[ 69%] Building CXX object CMakeFiles/zig.dir/src/tokenizer.cpp.o
[ 76%] Building CXX object CMakeFiles/zig.dir/src/util.cpp.o
[ 84%] Building CXX object CMakeFiles/zig.dir/src/codegen.cpp.o
[ 92%] Building CXX object CMakeFiles/zig.dir/src/zig_llvm.cpp.o
[100%] Building CXX object CMakeFiles/zig.dir/src/os.cpp.o
Linking CXX executable zig
[100%] Built target zig
josh@jash:~/dev/zig/build$ ./zig build --output hello ../test/hello.zig 
Original source:
----------------
#link("c")
extern {
    fn puts(s: *mut u8) -> i32;
    fn exit(code: i32) -> unreachable;
}

fn _start() -> unreachable {
    puts("Hello, world!");
    exit(0);
}


Tokens:
---------
NumberSign #
Symbol link
LParen (
StringLiteral "c"
RParen )
Extern extern
LBrace {
Fn fn
Symbol puts
LParen (
Symbol s
Colon :
Star *
Mut mut
Symbol u8
RParen )
Arrow ->
Symbol i32
Semicolon ;
Fn fn
Symbol exit
LParen (
Symbol code
Colon :
Symbol i32
RParen )
Arrow ->
Unreachable unreachable
Semicolon ;
RBrace }
Fn fn
Symbol _start
LParen (
RParen )
Arrow ->
Unreachable unreachable
LBrace {
Symbol puts
LParen (
StringLiteral "Hello, world!"
RParen )
Semicolon ;
Symbol exit
LParen (
NumberLiteral 0
RParen )
Semicolon ;
RBrace }
EOF 

AST:
------
Root
  ExternBlock
    FnDecl
      FnProto 'puts'
        ParamDecl 's'
          'mut' PointerType
            Type 'u8'
        Type 'i32'
    FnDecl
      FnProto 'exit'
        ParamDecl 'code'
          Type 'i32'
        Type 'unreachable'
  FnDef
    FnProto '_start'
      Type 'unreachable'
    Block
      FnCallExpression
        FnCall 'puts'
          StringLiteralExpression 'Hello, world!'
      FnCallExpression
        FnCall 'exit'
          NumberLiteralExpression 0

Semantic Analysis:
--------------------
OK

Code Generation:
------------------
; ModuleID = 'ZigModule'

@0 = private unnamed_addr constant [14 x i8] c"Hello, world!\00"

; Function Attrs: noreturn
declare void @exit(i32) #0

declare i32 @puts(i8*)

; Function Attrs: noreturn nounwind
define void @_start() #1 {
entry:
  %0 = call i32 @puts(i8* getelementptr inbounds ([14 x i8], [14 x i8]* @0, i32 0, i32 0)), !dbg !8
  call void @exit(i32 0), !dbg !10
  unreachable, !dbg !10
}

attributes #0 = { noreturn }
attributes #1 = { noreturn nounwind }

!llvm.dbg.cu = !{!0}

!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "zig 0.0.0", isOptimized: false, runtimeVersion: 0, emissionKind: 1, enums: !2, subprograms: !3)
!1 = !DIFile(filename: "hello.zig", directory: "../test")
!2 = !{}
!3 = !{!4}
!4 = !DISubprogram(name: "_start", scope: !1, file: !1, line: 7, type: !5, isLocal: false, isDefinition: true, scopeLine: 7, isOptimized: false, function: void ()* @_start, variables: !2)
!5 = !DISubroutineType(types: !6)
!6 = !{!7}
!7 = !DIBasicType(name: "void", encoding: DW_ATE_unsigned)
!8 = !DILocation(line: 8, column: 5, scope: !9)
!9 = distinct !DILexicalBlock(scope: !4, file: !1, line: 7, column: 28)
!10 = !DILocation(line: 9, column: 5, scope: !9)

Link:
-------
OK
josh@jash:~/dev/zig/build$ ./hello 
bash: ./hello: No such file or directory

The problem is that ./hello is linked against /lib/ld64.so.1 instead of /lib64/ld-linux-x86-64.so.2. This seems to be due to ld being misconfigured on Debian.

This patch can work around the issue:

diff --git a/src/codegen.cpp b/src/codegen.cpp
index d59eff3..8318a43 100644
--- a/src/codegen.cpp
+++ b/src/codegen.cpp
@@ -721,6 +721,8 @@ void code_gen_link(CodeGen *g, const char *out_file) {
     if (g->is_static) {
         args.append("-static");
     }
+    args.append("-dynamic-linker");
+    args.append("/lib64/ld-linux-x86-64.so.2");
     args.append("-o");
     args.append(out_file);
     args.append((const char *)buf_ptr(&out_file_o));
andrewrk pushed a commit that referenced this issue Jun 4, 2018
Sync with zig-lang/zig master
andrewrk pushed a commit that referenced this issue Dec 29, 2018
Fix dirent/stat, add preadv
andrewrk pushed a commit that referenced this issue Feb 17, 2019
gonzus added a commit to gonzus/zig that referenced this issue May 28, 2019
andrewrk pushed a commit that referenced this issue Sep 17, 2020
jedisct1 pushed a commit to jedisct1/zig that referenced this issue Mar 14, 2023
Some changes to make the Kyber impl more consistent with the stdlib
travisstaloch added a commit to travisstaloch/zig that referenced this issue May 2, 2023
this patch converts all the crashes submitted by @squeek502
(in ziglang#15382 (comment))
to errors.

HeaderIterator:
* add bounds checks to PaxIterator.next()
* convert several unsafe int casts to safe ones

misc:
* added FileType.tagName() for debugging which returns null for unnamed
enum values
* make unixTime() fallible
Rexicon226 referenced this issue in Rexicon226/zig Feb 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant