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

Bash: ./neolink: No such file or directory #142

Closed
TheGroundZero opened this issue Mar 18, 2021 · 12 comments
Closed

Bash: ./neolink: No such file or directory #142

TheGroundZero opened this issue Mar 18, 2021 · 12 comments
Labels
bug Something isn't working

Comments

@TheGroundZero
Copy link

TheGroundZero commented Mar 18, 2021

Describe the bug

I downloaded the Debian release of Neolink, installed the GStreamer dependancies and am now trying to launch the application.
Bash complains that it cannot find a file/directory with the name.

I did chmod +x to allow execution.

To Reproduce

$ apt install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
$ wget https://nightly.link/thirtythreeforty/neolink/workflows/build/master/release-i386-buster.zip
$ unzip -d neolink release-i386-buster.zip
$ cd neolink/
$ wget https://raw.githubusercontent.com/thirtythreeforty/neolink/master/sample_config.toml
$ chmod +x ./neolink
$ ./neolink --config sample_config.toml

-bash: ./neolink: No such file or directory

Expected behavior

Neolink starting with the sample (or my custom) config.

Versions

Debian 10 running in a Proxmox container

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
$ readelf -hlSVA ./neolink
ELF Header:
  Magic:   7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF32
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              DYN (Shared object file)
  Machine:                           Intel 80386
  Version:                           0x1
  Entry point address:               0x15a10
  Start of program headers:          52 (bytes into file)
  Start of section headers:          6930424 (bytes into file)
  Flags:                             0x0
  Size of this header:               52 (bytes)
  Size of program headers:           32 (bytes)
  Number of program headers:         12
  Size of section headers:           40 (bytes)
  Number of section headers:         42
  Section header string table index: 41

Section Headers:
  [Nr] Name              Type            Addr     Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            00000000 000000 000000 00      0   0  0
  [ 1] .interp           PROGBITS        000001b4 0001b4 000013 00   A  0   0  1
  [ 2] .note.ABI-tag     NOTE            000001c8 0001c8 000020 00   A  0   0  4
  [ 3] .note.gnu.build-i NOTE            000001e8 0001e8 000024 00   A  0   0  4
  [ 4] .gnu.hash         GNU_HASH        0000020c 00020c 000034 04   A  5   0  4
  [ 5] .dynsym           DYNSYM          00000240 000240 000a60 10   A  6   1  4
  [ 6] .dynstr           STRTAB          00000ca0 000ca0 000c95 00   A  0   0  1
  [ 7] .gnu.version      VERSYM          00001936 001936 00014c 02   A  5   0  2
  [ 8] .gnu.version_r    VERNEED         00001a84 001a84 0001a0 00   A  6   6  4
  [ 9] .rel.dyn          REL             00001c24 001c24 011f00 08   A  5   0  4
  [10] .rel.plt          REL             00013b24 013b24 0004e0 08  AI  5  26  4
  [11] .init             PROGBITS        00015000 015000 00002a 00  AX  0   0  4
  [12] .plt              PROGBITS        00015030 015030 0009d0 04  AX  0   0 16
  [13] .plt.got          PROGBITS        00015a00 015a00 000010 08  AX  0   0  8
  [14] .text             PROGBITS        00015a10 015a10 1e8c41 00  AX  0   0 16
  [15] .fini             PROGBITS        001fe654 1fe654 000019 00  AX  0   0  4
  [16] .rodata           PROGBITS        001ff000 1ff000 053a68 00   A  0   0 16
  [17] .eh_frame_hdr     PROGBITS        00252a68 252a68 00902c 00   A  0   0  4
  [18] .eh_frame         PROGBITS        0025ba94 25ba94 09fb94 00   A  0   0  4
  [19] .gcc_except_table PROGBITS        002fb628 2fb628 0199e0 00   A  0   0  4
  [20] .tbss             NOBITS          003160f8 3150f8 00008c 00 WAT  0   0  8
  [21] .init_array       INIT_ARRAY      003160f8 3150f8 000004 04  WA  0   0  4
  [22] .ctors            PROGBITS        003160fc 3150fc 000008 00  WA  0   0  4
  [23] .dtors            PROGBITS        00316104 315104 000008 00  WA  0   0  4
  [24] .data.rel.ro      PROGBITS        0031610c 31510c 016a48 00  WA  0   0  4
  [25] .dynamic          DYNAMIC         0032cb54 32bb54 000150 08  WA  6   0  4
  [26] .got              PROGBITS        0032cca4 32bca4 00035c 04  WA  0   0  4
  [27] .data             PROGBITS        0032d000 32c000 000070 00  WA  0   0  8
  [28] .bss              NOBITS          0032d070 32c070 0001c4 00  WA  0   0  4
  [29] .comment          PROGBITS        00000000 32c070 00001c 01  MS  0   0  1
  [30] .debug_aranges    PROGBITS        00000000 32c08c 004480 00      0   0  1
  [31] .debug_pubnames   PROGBITS        00000000 33050c 04a16f 00      0   0  1
  [32] .debug_info       PROGBITS        00000000 37a67b 09e4d8 00      0   0  1
  [33] .debug_abbrev     PROGBITS        00000000 418b53 000c43 00      0   0  1
  [34] .debug_line       PROGBITS        00000000 419796 062eaa 00      0   0  1
  [35] .debug_frame      PROGBITS        00000000 47c640 0003d8 00      0   0  4
  [36] .debug_str        PROGBITS        00000000 47ca18 0d4563 01  MS  0   0  1
  [37] .debug_pubtypes   PROGBITS        00000000 550f7b 0000b4 00      0   0  1
  [38] .debug_ranges     PROGBITS        00000000 55102f 04c2c8 00      0   0  1
  [39] .symtab           SYMTAB          00000000 59d2f8 0626c0 10     40 18168  4
  [40] .strtab           STRTAB          00000000 5ff9b8 09c4a2 00      0   0  1
  [41] .shstrtab         STRTAB          00000000 69be5a 00019e 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  p (processor specific)

Program Headers:
  Type           Offset   VirtAddr   PhysAddr   FileSiz MemSiz  Flg Align
  PHDR           0x000034 0x00000034 0x00000034 0x00180 0x00180 R   0x4
  INTERP         0x0001b4 0x000001b4 0x000001b4 0x00013 0x00013 R   0x1
      [Requesting program interpreter: /lib/ld-linux.so.2]
  LOAD           0x000000 0x00000000 0x00000000 0x14004 0x14004 R   0x1000
  LOAD           0x015000 0x00015000 0x00015000 0x1e966d 0x1e966d R E 0x1000
  LOAD           0x1ff000 0x001ff000 0x001ff000 0x116008 0x116008 R   0x1000
  LOAD           0x3150f8 0x003160f8 0x003160f8 0x16f78 0x1713c RW  0x1000
  DYNAMIC        0x32bb54 0x0032cb54 0x0032cb54 0x00150 0x00150 RW  0x4
  NOTE           0x0001c8 0x000001c8 0x000001c8 0x00044 0x00044 R   0x4
  TLS            0x3150f8 0x003160f8 0x003160f8 0x00000 0x0008c R   0x8
  GNU_EH_FRAME   0x252a68 0x00252a68 0x00252a68 0x0902c 0x0902c R   0x4
  GNU_STACK      0x000000 0x00000000 0x00000000 0x00000 0x00000 RW  0x10
  GNU_RELRO      0x3150f8 0x003160f8 0x003160f8 0x16f08 0x16f08 R   0x1

 Section to Segment mapping:
  Segment Sections...
   00
   01     .interp
   02     .interp .note.ABI-tag .note.gnu.build-id .gnu.hash .dynsym .dynstr .gnu.version .gnu.version_r .rel.dyn .rel.plt
   03     .init .plt .plt.got .text .fini
   04     .rodata .eh_frame_hdr .eh_frame .gcc_except_table
   05     .init_array .ctors .dtors .data.rel.ro .dynamic .got .data .bss
   06     .dynamic
   07     .note.ABI-tag .note.gnu.build-id
   08     .tbss
   09     .eh_frame_hdr
   10
   11     .init_array .ctors .dtors .data.rel.ro .dynamic .got

Version symbols section '.gnu.version' contains 166 entries:
 Addr: 0000000000001936  Offset: 0x001936  Link: 5 (.dynsym)
  000:   0 (*local*)       0 (*local*)       2 (GLIBC_2.0)     0 (*local*)
  004:   2 (GLIBC_2.0)     0 (*local*)       3 (GLIBC_2.2)     4 (GLIBC_2.1)
  008:   0 (*local*)       0 (*local*)       0 (*local*)       0 (*local*)
  00c:   5 (GLIBC_2.0)     2 (GLIBC_2.0)     6 (GCC_4.2.0)     5 (GLIBC_2.0)
  010:   5 (GLIBC_2.0)     7 (GLIBC_2.3.4)   2 (GLIBC_2.0)     0 (*local*)
  014:   5 (GLIBC_2.0)     4 (GLIBC_2.1)     0 (*local*)       0 (*local*)
  018:   2 (GLIBC_2.0)     2 (GLIBC_2.0)     4 (GLIBC_2.1)     0 (*local*)
  01c:   5 (GLIBC_2.0)     2 (GLIBC_2.0)     8 (GCC_3.0)       2 (GLIBC_2.0)
  020:   5 (GLIBC_2.0)     5 (GLIBC_2.0)     5 (GLIBC_2.0)     0 (*local*)
  024:   0 (*local*)       5 (GLIBC_2.0)     9 (GLIBC_2.3.2)   5 (GLIBC_2.0)
  028:   8 (GCC_3.0)       0 (*local*)       0 (*local*)       0 (*local*)
  02c:   2 (GLIBC_2.0)     0 (*local*)       0 (*local*)       0 (*local*)
  030:   a (GLIBC_2.2.4)   5 (GLIBC_2.0)     2 (GLIBC_2.0)     b (GLIBC_2.2)
  034:   8 (GCC_3.0)       0 (*local*)       3 (GLIBC_2.2)     4 (GLIBC_2.1)
  038:   0 (*local*)       9 (GLIBC_2.3.2)   2 (GLIBC_2.0)     0 (*local*)
  03c:   2 (GLIBC_2.0)     2 (GLIBC_2.0)     5 (GLIBC_2.0)     5 (GLIBC_2.0)
  040:   5 (GLIBC_2.0)     2 (GLIBC_2.0)     5 (GLIBC_2.0)     4 (GLIBC_2.1)
  044:   8 (GCC_3.0)       9 (GLIBC_2.3.2)   5 (GLIBC_2.0)     0 (*local*)
  048:   c (GLIBC_2.1)     0 (*local*)       0 (*local*)       5 (GLIBC_2.0)
  04c:   2 (GLIBC_2.0)     4 (GLIBC_2.1)     2 (GLIBC_2.0)     d (GLIBC_2.2)
  050:   0 (*local*)       0 (*local*)       8 (GCC_3.0)       0 (*local*)
  054:   2 (GLIBC_2.0)     e (GLIBC_2.3.3)   0 (*local*)       2 (GLIBC_2.0)
  058:   2 (GLIBC_2.0)     0 (*local*)       f (GLIBC_2.3)     2 (GLIBC_2.0)
  05c:   0 (*local*)       0 (*local*)       0 (*local*)      10 (GLIBC_2.2.3)
  060:  11 (GLIBC_2.18)    5 (GLIBC_2.0)    12 (GLIBC_2.1.3)   2 (GLIBC_2.0)
  064:   2 (GLIBC_2.0)     0 (*local*)      13 (GLIBC_2.28)    0 (*local*)
  068:   0 (*local*)       b (GLIBC_2.2)     0 (*local*)       0 (*local*)
  06c:   0 (*local*)       2 (GLIBC_2.0)     0 (*local*)       0 (*local*)
  070:   2 (GLIBC_2.0)     2 (GLIBC_2.0)     8 (GCC_3.0)       5 (GLIBC_2.0)
  074:   4 (GLIBC_2.1)     0 (*local*)       5 (GLIBC_2.0)     9 (GLIBC_2.3.2)
  078:   2 (GLIBC_2.0)     5 (GLIBC_2.0)     0 (*local*)       5 (GLIBC_2.0)
  07c:   0 (*local*)       5 (GLIBC_2.0)     2 (GLIBC_2.0)     3 (GLIBC_2.2)
  080:   0 (*local*)       0 (*local*)       2 (GLIBC_2.0)    14 (GLIBC_2.0)
  084:   5 (GLIBC_2.0)     8 (GCC_3.0)       0 (*local*)       2 (GLIBC_2.0)
  088:   2 (GLIBC_2.0)     2 (GLIBC_2.0)     8 (GCC_3.0)       2 (GLIBC_2.0)
  08c:   0 (*local*)       0 (*local*)       2 (GLIBC_2.0)     0 (*local*)
  090:   0 (*local*)       0 (*local*)       2 (GLIBC_2.0)     0 (*local*)
  094:  15 (GCC_3.3)       2 (GLIBC_2.0)     5 (GLIBC_2.0)     5 (GLIBC_2.0)
  098:   2 (GLIBC_2.0)     0 (*local*)       0 (*local*)       8 (GCC_3.0)
  09c:   0 (*local*)       0 (*local*)       0 (*local*)       3 (GLIBC_2.2)
  0a0:   8 (GCC_3.0)       0 (*local*)       1 (*global*)      1 (*global*)
  0a4:   1 (*global*)      1 (*global*)

Version needs section '.gnu.version_r' contains 6 entries:
 Addr: 0x0000000000001a84  Offset: 0x001a84  Link: 6 (.dynstr)
  000000: Version: 1  File: libdl.so.2  Cnt: 1
  0x0010:   Name: GLIBC_2.0  Flags: none  Version: 20
  0x0020: Version: 1  File: ld-linux.so.2  Cnt: 1
  0x0030:   Name: GLIBC_2.3  Flags: none  Version: 15
  0x0040: Version: 1  File: librt.so.1  Cnt: 1
  0x0050:   Name: GLIBC_2.2  Flags: none  Version: 13
  0x0060: Version: 1  File: libgcc_s.so.1  Cnt: 3
  0x0070:   Name: GCC_3.3  Flags: none  Version: 21
  0x0080:   Name: GCC_3.0  Flags: none  Version: 8
  0x0090:   Name: GCC_4.2.0  Flags: none  Version: 6
  0x00a0: Version: 1  File: libpthread.so.0  Cnt: 6
  0x00b0:   Name: GLIBC_2.2.3  Flags: none  Version: 16
  0x00c0:   Name: GLIBC_2.3.3  Flags: none  Version: 14
  0x00d0:   Name: GLIBC_2.2  Flags: none  Version: 11
  0x00e0:   Name: GLIBC_2.3.2  Flags: none  Version: 9
  0x00f0:   Name: GLIBC_2.0  Flags: none  Version: 5
  0x0100:   Name: GLIBC_2.1  Flags: none  Version: 4
  0x0110: Version: 1  File: libc.so.6  Cnt: 8
  0x0120:   Name: GLIBC_2.28  Flags: none  Version: 19
  0x0130:   Name: GLIBC_2.1.3  Flags: none  Version: 18
  0x0140:   Name: GLIBC_2.18  Flags: none  Version: 17
  0x0150:   Name: GLIBC_2.1  Flags: none  Version: 12
  0x0160:   Name: GLIBC_2.2.4  Flags: none  Version: 10
  0x0170:   Name: GLIBC_2.3.4  Flags: none  Version: 7
  0x0180:   Name: GLIBC_2.2  Flags: none  Version: 3
  0x0190:   Name: GLIBC_2.0  Flags: none  Version: 2
@TheGroundZero TheGroundZero added the bug Something isn't working label Mar 18, 2021
@QuantumEntangledAndy
Copy link
Collaborator

The interpretor is /lib/ld-linux.so.2.

Can you confirm that file exists.

Also can you run uname -m and tell me the architecture

@TheGroundZero
Copy link
Author

TheGroundZero commented Mar 18, 2021

# find / -iname ld-linux.so.2 returns nothing (except some permission denied)

# ls -l /lib
total 40
lrwxrwxrwx  1 root root    21 Jul  8  2019 cpp -> /etc/alternatives/cpp
drwxr-xr-x  2 root root  4096 Jul  8  2019 ifupdown
drwxr-xr-x  2 root root  4096 Jul  8  2019 init
drwxr-xr-x  3 root root  4096 Jul  8  2019 lsb
drwxr-xr-x  2 root root  4096 Mar 18 10:46 modprobe.d
drwxr-xr-x  8 root root 12288 Mar 18 10:46 systemd
drwxr-xr-x 15 root root  4096 Feb 11  2019 terminfo
drwxr-xr-x  4 root root  4096 Mar 18 10:51 udev
drwxr-xr-x  3 root root  4096 Mar 18 10:51 x86_64-linux-gnu
$ uname -m
x86_64

@QuantumEntangledAndy
Copy link
Collaborator

P.s. Its late in my timezone so I won't be able to reply until tomorrow now.

But if the uname -m tells you your arch is not i368 please go and download the right neolink for your arch.

@TheGroundZero
Copy link
Author

P.s. Its late in my timezone so I won't be able to reply until tomorrow now.

But if the uname -m tells you your arch is not i368 please go and download the right neolink for your arch.

As there's no x86_64 for Debian, I'd better set up a Ubuntu container?

@TheGroundZero
Copy link
Author

TheGroundZero commented Mar 18, 2021

Removed my Debian container and replaced with Ubuntu 20.04

# cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.2 LTS"
VERSION_ID="20.04"

Repeated previous steps, but downloading the ubuntu_x86_64 release.

$ wget https://nightly.link/thirtythreeforty/neolink/workflows/build/master/release-ubuntu-18.04.zip
$ apt install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
$ apt install unzip
$ unzip -d neolink release-ubuntu-18.04.zip
$ wget https://raw.githubusercontent.com/thirtythreeforty/neolink/master/sample_config.toml
$ cp sample_config.toml my_config.toml
$ nano my_config.toml
$ chmod u+x neolink
$ ./neolink --config my_config.toml
./neolink: error while loading shared libraries: libgstrtspserver-1.0.so.0: cannot open shared object file: No such file or directory

$ apt install libgstrtspserver-1.0-0
$ ./neolink --config my_config.toml
[2021-03-18T16:31:38Z INFO  neolink] Neolink 5c83472fae89884f5df06475785ec3ee08612448 release
[2021-03-18T16:31:38Z WARN  neolink] Without a server certificate, usernames and passwords will be exchanged in plaintext!
[2021-03-18T16:31:38Z INFO  neolink] poort: Connecting to camera at 192.168.xx.xx:9000
[2021-03-18T16:31:38Z INFO  neolink] poort: Connecting to camera at 192.168.xx.xx:9000
[2021-03-18T16:31:39Z INFO  neolink] poort: Connected and logged in
[2021-03-18T16:31:39Z INFO  neolink] poort: Connected and logged in
[2021-03-18T16:31:39Z INFO  neolink] poort: Starting video stream subStream
[2021-03-18T16:31:39Z INFO  neolink] poort: Camera time is already set: 2021-03-18 17:31:38 +1
[2021-03-18T16:31:39Z INFO  neolink] poort: Camera reports firmware version v2.0.0.669_20060200
[2021-03-18T16:31:39Z INFO  neolink] poort: Starting video stream mainStream

@TheGroundZero
Copy link
Author

So it was my mistake for downloading the 32-bit release on a Debian x64 system.
Running Ubuntu x64 and the x64 release seems to work.

To add the camera in iSpy:

  1. add camera as Generic RTSP
  2. use rtsp://<ip>:8554/camera_name/mainStream as URL
  3. let it search for the camera and pick one of the proposed URLs, none will match the correct URL
  4. edit camera to put rtsp://<ip>:8554/camera_name/mainStream back as URL

@QuantumEntangledAndy
Copy link
Collaborator

Glad you got it working. I had a feeling it was this when I saw you were using the i386.

You mention your using a container? There is a know issue with docker and very large (4k) camera streams where it will segfault #46. Although this may be fixed now with the newer gstreamers (maybe closed in #141).

@TheGroundZero
Copy link
Author

I'm running a Linux Container (LXC) in Proxmox, not sure if that has the same issues as a Docker container.
But if the newer GStreamer fixes it, I should be fine anyway?

@MRobi1
Copy link

MRobi1 commented Nov 23, 2021

Are there plans for releasing an x86_64 debian version in the future?
Seems like anybody running debian on any sort of modern hardware would be running 64bit not 32bit.

I've run into this same issue with a Proxmox LXC. Would like to have neolink and zoneminder running in the same LXC.
I can run neolink just fine in a ubuntu lxc but have issues getting zoneminder going because of AppArmour.
I can run neolink just fine in a debian lxc but can't run neolink because it's i386. Tried running it in docker but it continuously crashes.
So it kind of sucks I'm stuck devoting resources to 2 containers instead of just 1.

@QuantumEntangledAndy
Copy link
Collaborator

@MRobi1 I am a bit confused why you cannot use the ubuntu x86_64 version on the debian

p.s. A new issue is best

@MRobi1
Copy link

MRobi1 commented Nov 24, 2021

I am a bit confused why you cannot use the ubuntu x86_64 version on the debian

I'm going to just come out and say I didn't even realize that was possible. LOL
Loaded it up and works like a charm! Thanks for the tip.

@QuantumEntangledAndy
Copy link
Collaborator

Hmm perhaps we should edit the readme to say Ubuntu/Debian

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants