Compile FFmpeg into .so file on Ubuntu 22.04 - dll

I am attempting to compile FFmpeg to produce a .so file rather than an executable on Ubuntu 22.04. I was able create a DLL for Windows using these tags in the configuration:
--extra-ldexeflags='-dll' --target-os=win64 --arch=x86_64 --toolchain=msvc
But I have not been able to find the configuration needed to create a .so file.
Does anyone have any insight as to how I may do so?

Related

impossible to install a intellij idea

I downloaded the ultimate version of IntelliJ from the official website and when I do ./idea.sh in the .. /bin directory of the file I get this error message in the terminal:
OpenJDK 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.Error opening zip file or JAR manifest missing : /root/.jetbrains/jetbrains-agent-v3.2.0.de72.619 Error occurred during initialization of VM agent library failed to init: instrument
I don't know if I am supposed to have a .jetbrains file in my repersonel if so why I don't have it and if not how to get it?
Cordially...
What's the environment of your machine and I do not think you need to care about how to get .jetbrains manually by yourself. I've installed a IntelliJ idea on Ubuntu18.04, it works well. You can try run it as an administrative, also you can go to ./bin folder and then run ./idea.sh rather than ../bin folder
btw, as I said install, it does not indicate we need to compile it and get some executable binary file to run it. It's a green software that contains anything you need, you can run it directly
The Error opening zip file or JAR manifest missing : /root/.jetbrains/jetbrains-agent-v3.2.0.de72.619 error indicate that there is a problem with the distribution you have downloaded. It was corrupted or modified improperly.
Re-download it from https://www.jetbrains.com/idea/download and install into a new empty directory.
You can also try deleting the IDE's config and system directories.

How do I make a program think it was built under a different directory with cmake while cross-compiling?

I am trying to cross-compile a web server (Monkey-Server). My host environment is an Ubuntu 64 bit and the target environment is an has an arm architecture. All the dependencies are available in the folder.There is an option to make install too, but I thought building it locally on my host machine transferring the folder over to the embedded system was a smart move. I am able to compile successfully and run the web server on the target system, but it complains that it is not able to find the config file. The web server looks for the config file in the path where it was compiled on the host machine.
Example: It tries to open a folder that only exist on the host machine
ERROR: Cannot find/open /home/username/src/camera_root/monkey-server/conf/
But it should actually be looking for the config file in
/monkey-server/conf/
This is what my toolchain file looks like
Set(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER /home/username/src/compilerdir/arm-hisiv300-linux-uclibcgnueabi-gcc)
#SET(CMAKE_SYSROOT /home/username/src/camera_root)
#SET(CMAKE_FIND_ROOT_PATH /home/username/src/camera_root)
As you can see at the bottom of my toolchain file I have tried to set both sysroot and find_root_path without luck.
When I tried the SET(CMAKE_SYSROOT /home/username/src/camera_root) line I was unable to compile because the C compiler was unable to compile a simple test program.
How do I help the web server find it's own config file?
This is an old question and the OP has probably moved on by now, but for anyone else with the same problem, the Monkey has a --configdir and a --configserver switch to set the location of the configuration files as a workaround for this problem.

Building a 64bit Debian package on 32bit Ubuntu

I am trying to build a .deb package for an application my company (and me) have been developing.
I'm trying to create a 64bit package on my 32bit ubuntu (12.04 LTS) using dpkg-buildpackage and I get the following warnings/errors:
dpkg-shlibdeps: warning/error: couldn't find library X needed by Y.so (ELF format: 'elf64-x86-64'; RPATH: 'some/path/that/does/not/exist')
When X is one of our compiled shared libraries, we get a warning. When it's a system library (like libgcc_s.so.1 and libstdc++.so.6) we get an error.
Why is the RPATH refers to a path that does not exist?
By the way, when I make a 32bit package (on our files that were compiled for 32bit of course) it only shows warnings (only about our proprietary .so files) but creates the .deb file.
If I could, I would have posted my debian folder content but I cant take files out of our network. I can type the relevant parts if its needed.
You need to install the 64-bits version of the library with apt-get (actually anything do, but this is the most easy):
sudo apt-get install libyouneed-dev:amd64
The trick here is the :amd64, which tells the package manager to install the 64-bit version of that package. The same applies for 32-bits libraries in 64-bit systems. It's called multiarch.
The package is looking at that path because that is where the libraries of 64-bits (or 32-bits) gets stored, but since you don't have it installed the path do not exist.
Install an amd64 chroot environment and build your package in there. This way you avoid the various multi-arch pitfalls, with the added benefit of having a clean, reproducible build.
There is a tool that makes this very easy: mk-sbuild.
You need to install ubuntu-dev-tools and sbuild.
Then, run mk-sbuild --arch=amd64 precise, which will setup the build environment for you.
Add yourself to the sbuild group: adduser <your user name> sbuild
Log out and log back in so your group membership will be reflected.
You can then build your package in the chroot:
sbuild -d precise --arch=amd64 name_of_package.dsc
This assumes you've already build the source package with debuild -S or similar.

IKVMC unable to load runtime assembly

I have a very simple jar file and I'm trying to convert it to a mono dll using ikvmc, but I'm getting the message "Error: unable to load runtime assembly".
My command line is:
ikvmc -target:library test.jar
My jar contains only one class, that simply has a method returning a String.
I'm just trying to experiment with ikvmc at this point before starting to develop some more complicated things.
I'm using:
Open Suse 11.3, 32 bits
kernel 3.11.6-4-desktop
ikvmc version 0.44.0.5
mono 3.0.6
Any hints?
Ok, I've got it working...
I've copied all files on folder "/usr/lib/mono/ikvm" to folder "/usr/lib/ikvm".
Apparently, ikvmc searches for runtime assemblies on the same folder where ikvmc executable are located.
If someone knows a workaround or a unkown (for me, at least) setting that avoids such copy, I really would like to know.

Cannot load module

I receive this error when I try to run Apache 2.2 with mod_wsgi, I have the correct Python version number and the module is installed correctly for Apache.
httpd.exe: Syntax error on line 128 of C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/Program Files (x86)/Apache Software Foundation/Apache2.2/modules/mod_wsgi.so into server: The specified module could not be found.
Verify that you have the right build of Python for your Apache installation. If you have a 32-bit Apache build and 64-bit Python build you will receive this error. Apache only comes in 32-bit for Windows, so if you're running 64-bit make sure you still get 32-bit Python.
The permissions on the file must be such that the daemon user that Apache runs as can read it. Also make sure that the file isn't actually called mod_wsgi.so.so due to Windows file browser hiding the outer .so extension.