libtbb.so.2 library does not exist when sourcing `compilervars.sh intel64` - linux

I am trying to run a file using the make command. But when I do this, I get the message:
make: ifort: Command not found
I know that I must set the ifort environment using the following command:
/opt/intel/parallel_studio_xe_2020.1.102/compilers_and_libraries_2020/linux/bin/compilervars.sh intel64
But when I do this, I get the message:
ERROR: libtbb.so.2 library does not exist in SUBSTITUTE_INSTALL_DIR_HERE/lib/intel64/gcc4.8.
Does anyone know what should I do? It looks to me that I must somehow modify the usual variable LD_LIBRARY_PATH to inform where gcc4.8 is.
I can manually find it at:/opt/intel/tbb/lib/intel64/gcc4.8
Where should I put this information?
I am currently using Parallel Studio XE 2020.

Open
/opt/intel/parallel_studio_xe_2020.1.102/compilers_and_libraries_2020/linux/bin/compilervars.sh
with your favorite editor, and look for the line with tbb/bin/tbbvars.sh.
Find the full path for that script. It should be something like
/opt/intel/parallel_studio_xe_2020.1.102/compilers_and_libraries_2020/linux/tbb/bin/tbbvars.sh.
Open that, and look for the line
TBBROOT=SUBSTITUTE_INSTALL_DIR_HERE
and replace with
TBBROOT="/opt/intel/tbb"

Related

Installation error: editing Linux compile file

I am trying to install a hydrodynamic simulation software on Ubuntu, but I get an error similar to the error mentioned in their documentation. The documentation has a recommended solution to this error, something that I am not aware of how to fix.
Any help is greatly appreciated. Thanks!
As part of the installation, the system must compile some code to work on that machine. The line that starts with "gcc" is a compiler command. You will need to find the "x.sys.Linux.compile" file and add the -fPIC flag to the command that -presumably- is already in that file.
I would use the command
find . | grep x.sys.Linux.compile
to find it and then use vim to modify it, adding that -fPIC flag
Then, retry the installation

I don't kow what are the files which are supposed to be in asm/

I'am new on linux and I try to compile this code https://elixir.bootlin.com/linux/v4.0/source/drivers/w1/slaves/w1_ds2433.c (my target is to create a ds2433.ko and if it works a ds28ec20.ko)
When i compile the ds2433.c I get that :
In file included from /usr/include/kernel.h:8:0, from w1_ds2433.c:8:
/usr/include/linux/linkage.h:8:10: fatal error: asm/linkage.h: No such file or directory
The main problem is that I don't know if I need to create the file suppose to be in /asm or if the code will create them.
When you compile the code, you should get a file with the extension .s, .asm, or maybe something else. To check if it is assembly, you can go into the terminal, type "ls -l" and if you see a file with an extension you are unfamiliar with, you can type in the terminal "cat filename.ext" and see the contents of it.

make: i686-linux-gnu-ld: Command not found

i want to install cpanm WWW::Curl::Form on my Synology NAS. But that fails. Here is the output cpanm WWW::Curl::Form WWW::Curl::Easy File::Find::Rule String::CRC32 URI::Escape
--> Working on WWW::Curl::Form
Fetching http://www.cpan.org/authors/id/S/SZ/SZBALINT/WWW-Curl-4.17.tar.gz ... OK
Configuring WWW-Curl-4.17 ... OK
Building and testing WWW-Curl-4.17 ... FAIL
! Installing WWW::Curl::Form failed. See /var/services/homes/fox/.cpanm/work/1541095458.25803/build.log
the log file gives me:
make: i686-linux-gnu-ld: Command not found
But i dont know how to fix it on my Synology NAS (DSM 6.2 and appollolake architecture DS918+)
After reviewing your additional comments, I believe I have potential solution. It looks like you are trying to install some Perl modules via the default Perl shell, cpan. As part of the installation process, the make utility is being executed. This utility is heavily used for compiling and building source from C and C++ source code, along with other languages.
The make utility is trying to call some executable i686-linux-gnu-ld which is a linker, see ld. A linker is a utility used in C programming for linking (combining) multiple compiled object files into a single executable binary. make is calling this utility as some sort of build process. Instead of calling i686-linux-gnu-ld it should probably just be calling ld. The only thing I am not sure about is why it is using the full name of the utility instead of ld.
I can think of two solutions. The first would be to update the make file to use the correct name for the linker. I'm not sure how you would do this when it is being installed via cpan since it is downloading a package and executing the make file before you have a chance to modify it. The other option is to create a symbolic link from the incorrect name and path of ld that the make file is using to the correct path /opt/bin/ld. This will result in ld being called when i686-linux-gnu-ld is called. Also, I forgot to mention it earlier but the which command will tell you where an executable / command is located on your shell's path.
The Stack Overflow post, How to symlink a file in Liunx?, gives a good explanation of how to create a symlink. You need to create a symlink to point to the correct name and path of the linker. To do so run the following command:
ln -s /opt/bin/ld /usr/bin/i686-linux-gnu-ld
Depending on the permissions of these directories you may need to run this command under a account with elevated permissions or via sudo. I apologize for this post being rather long and verbose. I just wanted to explain my solution in detail. I hope this helps. Please let me know if this doesn't resolve the problem.
edit: fixed typo in the command.

cygwin binary exec format error

I have a script file that I was given to run in windows using Cygwin. When I try to use this file I get the following error
-bash: /sigdet/filename: cannot execute binary file: Exec format error.
sigdet is the folder within the Cygwin directory that I have the script. Rawdata is the name of the directory with the raw data files that the script is supposed to analyze.
To try and solve this, I have changed the file permissions, I have checked to make sure that it is on a 64 bit machine and the script appears to have compiled on a 64-bit machine. After these steps, I don't know what else the problem could be. Here are the commands I've entered:
I first changed the directory like so:
$ cd /sigdet/
Then I ran the script that is suppsed to work:
$ /sigdet/filename -i rawdata
Does the script file need to have an extension in windows? I've tried changing it to a .sh extension with no luck. I'm told that it just works on other windows machines just how it is.
Thanks to anyone that can help with this.
Your file is not an executable. It most probably contains ELF executable which is designed for Linux operating system, or it's corrupt.
If your file was a shell script, or in fact anything that contained plain text, you'd get different errors (such as, "expected command name" or "unknown command: XYZ" etc.)
Scripts are not supposed to have file extensions, like any executables. On the other hand, they should have shebangs: small text located in the first line that tells the system the path to the interpreter. For example, a Python executable script might be named whatever and have #!/usr/bin/python3 or similar in the first line. When you run it through ./whatever in the shell, it'll look for python3 in /usr/bin and run your file like this: /usr/bin/python3 ./whatever. (In fact, thanks to this you can also specify additional parameters that get passed to the interpreter.)
There is also a chance that your script is valid, but it contains a shebang pointing to bad interpreter. If that is the case, then most likely the path is correct, otherwise you'd get /whatever/interpreter: bad interpreter: no such file or directory error or similar. But then, all the other points apply to the interpreter (which is just another executable...)
If the script and/or interpreter was meant to be executed on Windows or Cygwin at least, it should either contain aforementioned shebang (#!/path in the first name) or it should be Windows executable (in which case the file data should begin with MZ letters, you can inspect it in notepad.) If it isn't, it means the files you were given can't run on Cygwin.
Had this same problem. Added the following at the top of makefile:
export ARCH = CYGNUS
What happened during the make process is that Linux and Windows versions of the executables were created. You just have to use ./.exe versions.
In my case, I got the error when I used a wrong command to compile my C program. When I used the right command:
gcc myprog.c -o myprog.exe
the error was resolved.

Matlab Libopencv error using Linux

I am running into errors with opencv. I downloaded a package online and compiled each of the folders by cd into them and running make through the command line. But when I try using one of the functions, I run into this error: libopencv_core.so.2.3: cannot open shared object file: No such file or directory
The file its trying to reach is indeed there, since I checked this, but for some reason its saying its not. I am pretty bad at figuring out path problems but I think this is one of them. Can anyone tell me how to fix this? Thanks

Resources